@exaudeus/workrail 3.14.0 → 3.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/services/validation-engine.js +4 -9
- package/dist/application/services/workflow-compiler.js +4 -6
- package/dist/console/assets/index-BZYIjrzJ.js +28 -0
- package/dist/console/assets/index-OLCKbDdm.css +1 -0
- package/dist/console/index.html +2 -2
- package/dist/engine/engine-factory.js +2 -2
- package/dist/engine/types.d.ts +1 -1
- package/dist/manifest.json +63 -63
- package/dist/mcp/handlers/shared/request-workflow-reader.d.ts +5 -0
- package/dist/mcp/handlers/shared/request-workflow-reader.js +47 -2
- package/dist/mcp/handlers/v2-advance-core/assessment-consequences.d.ts +1 -1
- package/dist/mcp/handlers/v2-advance-core/assessment-consequences.js +4 -5
- package/dist/mcp/handlers/v2-advance-core/index.js +1 -1
- package/dist/mcp/handlers/v2-advance-core/outcome-blocked.js +1 -1
- package/dist/mcp/handlers/v2-execution/start.d.ts +1 -0
- package/dist/mcp/handlers/v2-execution/start.js +20 -1
- package/dist/mcp/handlers/v2-workflow.d.ts +20 -0
- package/dist/mcp/handlers/v2-workflow.js +119 -10
- package/dist/mcp/output-schemas.d.ts +109 -8
- package/dist/mcp/output-schemas.js +31 -11
- package/dist/mcp/server.js +48 -1
- package/dist/mcp/tool-descriptions.js +17 -9
- package/dist/mcp/v2/tools.d.ts +6 -0
- package/dist/mcp/v2/tools.js +2 -0
- package/dist/mcp/workflow-protocol-contracts.js +5 -1
- package/dist/types/workflow-definition.d.ts +1 -2
- package/dist/v2/infra/local/workspace-anchor/index.js +4 -1
- package/dist/v2/usecases/console-routes.js +49 -1
- package/dist/v2/usecases/console-service.d.ts +1 -0
- package/dist/v2/usecases/console-service.js +4 -1
- package/dist/v2/usecases/console-types.d.ts +12 -0
- package/dist/v2/usecases/worktree-service.js +55 -7
- package/package.json +2 -2
- package/spec/authoring-spec.json +82 -1
- package/spec/workflow-tags.json +132 -0
- package/spec/workflow.schema.json +3 -11
- package/workflows/adaptive-ticket-creation.json +40 -22
- package/workflows/architecture-scalability-audit.json +65 -31
- package/workflows/bug-investigation.agentic.v2.json +36 -14
- package/workflows/coding-task-workflow-agentic.json +50 -38
- package/workflows/coding-task-workflow-agentic.lean.v2.json +124 -37
- package/workflows/coding-task-workflow-agentic.v2.json +90 -30
- package/workflows/cross-platform-code-conversion.v2.json +168 -48
- package/workflows/document-creation-workflow.json +47 -17
- package/workflows/documentation-update-workflow.json +8 -8
- package/workflows/intelligent-test-case-generation.json +2 -2
- package/workflows/learner-centered-course-workflow.json +267 -267
- package/workflows/mr-review-workflow.agentic.v2.json +81 -14
- package/workflows/personal-learning-materials-creation-branched.json +175 -175
- package/workflows/presentation-creation.json +159 -159
- package/workflows/production-readiness-audit.json +54 -15
- package/workflows/relocation-workflow-us.json +44 -35
- package/workflows/routines/tension-driven-design.json +1 -1
- package/workflows/scoped-documentation-workflow.json +25 -25
- package/workflows/test-artifact-loop-control.json +1 -2
- package/workflows/ui-ux-design-workflow.json +327 -0
- package/workflows/workflow-diagnose-environment.json +1 -1
- package/workflows/workflow-for-workflows.json +507 -484
- package/workflows/workflow-for-workflows.v2.json +43 -11
- package/workflows/wr.discovery.json +112 -30
- package/dist/console/assets/index-DW78t31j.css +0 -1
- package/dist/console/assets/index-EsSXrC_a.js +0 -28
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "workflow-for-workflows",
|
|
3
3
|
"name": "Workflow Authoring Workflow (Quality Gate v2)",
|
|
4
|
-
"version": "2.
|
|
5
|
-
"description": "
|
|
4
|
+
"version": "2.4.0",
|
|
5
|
+
"description": "Use this to author or modernize a WorkRail workflow. Guides through understanding the task, defining effectiveness targets, designing architecture and quality gates, drafting, validating, assigning tags, and handing off.",
|
|
6
6
|
"recommendedPreferences": {
|
|
7
7
|
"recommendedAutonomy": "guided",
|
|
8
8
|
"recommendedRiskPolicy": "conservative"
|
|
@@ -94,7 +94,15 @@
|
|
|
94
94
|
"title": "MR Review Workflow (Outcome Baseline Example)",
|
|
95
95
|
"source": "workflows/mr-review-workflow.agentic.v2.json",
|
|
96
96
|
"resolveFrom": "package",
|
|
97
|
-
"purpose": "Strong example of hypothesis, neutral fact packet, reviewer families, contradiction synthesis, and
|
|
97
|
+
"purpose": "Strong example of hypothesis, neutral fact packet, reviewer families, contradiction synthesis, final validation, and a three-dimension orthogonal assessment gate.",
|
|
98
|
+
"authoritative": false
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "bug-investigation-workflow",
|
|
102
|
+
"title": "Bug Investigation Workflow (Assessment Gate Example)",
|
|
103
|
+
"source": "workflows/bug-investigation.agentic.v2.json",
|
|
104
|
+
"resolveFrom": "package",
|
|
105
|
+
"purpose": "Simpler example of a single-dimension assessment gate on a final validation step before handoff.",
|
|
98
106
|
"authoritative": false
|
|
99
107
|
},
|
|
100
108
|
{
|
|
@@ -184,7 +192,7 @@
|
|
|
184
192
|
"Decide the phase list, one-line goal for each phase, and overall ordering.",
|
|
185
193
|
"Design loops with explicit exit rules, bounded maxIterations, and real reasons for another pass.",
|
|
186
194
|
"Decide confirmation gates, delegation vs template injection vs direct execution, promptFragments, references, artifacts, and metaGuidance.",
|
|
187
|
-
"If `authoringMode = modernize_existing`, decide preserve-in-place, restructure, or rewrite. For each item in valueInventory, record: `preserved` (structurally present with equivalent enforcement), `replaced` (new mechanism prevents same failure mode
|
|
195
|
+
"If `authoringMode = modernize_existing`, decide preserve-in-place, restructure, or rewrite. For each item in valueInventory, record: `preserved` (structurally present with equivalent enforcement), `replaced` (new mechanism prevents same failure mode — justify equivalence), or `dropped` (intentionally removed — justify the loss). Phase-level mapping alone is insufficient; track what was inside each restructured or removed phase."
|
|
188
196
|
],
|
|
189
197
|
"outputRequired": {
|
|
190
198
|
"notesMarkdown": "Structured workflow outline, loop design, confirmation design, delegation design, artifact plan, and modernization mapping.",
|
|
@@ -229,7 +237,7 @@
|
|
|
229
237
|
"procedure": [
|
|
230
238
|
"Decide whether the authored workflow needs a hypothesis step, neutral fact packet, reviewer or validator families, contradiction loop, final validation bundle, or explicit blind-spot handling.",
|
|
231
239
|
"Design the confidence model, blind-spot model, and state economy plan.",
|
|
232
|
-
"Decide the hard-gate dimensions that would make the authored workflow unsafe or unsatisfying if they fail.",
|
|
240
|
+
"Decide the hard-gate dimensions that would make the authored workflow unsafe or unsatisfying if they fail. If hard gates exist, implement them using the native `assessments` + `assessmentRefs` + `assessmentConsequences` schema fields rather than informal notes or `requireConfirmation` alone. Each dimension should capture a distinct orthogonal failure mode -- not restate the workflow's existing confidence band. See `mr-review-workflow.agentic.v2.json` and `bug-investigation.agentic.v2.json` as exemplars.",
|
|
233
241
|
"Write the redesign triggers that should force architectural revision rather than cosmetic refinement."
|
|
234
242
|
],
|
|
235
243
|
"outputRequired": {
|
|
@@ -432,7 +440,7 @@
|
|
|
432
440
|
"procedure": [
|
|
433
441
|
"Trace the authored workflow step by step against the user's actual task or the closest realistic scenario.",
|
|
434
442
|
"For each step, ask: what would the agent actually do, what context would it have, what would it likely produce, and what would the next step inherit?",
|
|
435
|
-
"Also trace at least one degraded or edge-case path
|
|
443
|
+
"Also trace at least one degraded or edge-case path — not just the happy path. Ask: what happens when a condition evaluates unexpectedly, a loop has nothing to iterate, a runCondition skips a phase, or the user provides minimal input? Quality gates that only protect the happy path are not quality gates.",
|
|
436
444
|
"Identify likely weak steps, likely unsatisfying outputs, and likely false-confidence modes.",
|
|
437
445
|
"For any loop in the workflow, explicitly check: does the exit condition have structural teeth (artifact contract, bounded maxIterations), or does it rely on prose instructions the engine cannot enforce?",
|
|
438
446
|
"Fix issues directly in the workflow file when the right improvement is clear."
|
|
@@ -460,7 +468,7 @@
|
|
|
460
468
|
"var": "authoringMode",
|
|
461
469
|
"equals": "modernize_existing"
|
|
462
470
|
},
|
|
463
|
-
"text": "For modernize_existing: after tracing the workflow forward, check each item in valueInventory. For each enforcement mechanism and domain knowledge item: would the modernized workflow produce the same behavior? Any item where the answer is no or weaker is a loss
|
|
471
|
+
"text": "For modernize_existing: after tracing the workflow forward, check each item in valueInventory. For each enforcement mechanism and domain knowledge item: would the modernized workflow produce the same behavior? Any item where the answer is no or weaker is a loss — fix it directly or record the accepted tradeoff with justification."
|
|
464
472
|
}
|
|
465
473
|
],
|
|
466
474
|
"requireConfirmation": false
|
|
@@ -475,7 +483,7 @@
|
|
|
475
483
|
"Reviewer-family or validator output is evidence, not authority."
|
|
476
484
|
],
|
|
477
485
|
"procedure": [
|
|
478
|
-
"Score these dimensions 0-2 with one sentence of evidence each: `voiceClarity`, `ceremonyLevel`, `loopSoundness`, `delegationBoundedness`, `artifactClarity`, `taskEffectiveness`, `falseConfidenceResistance`, `stateMinimality`, `coverageSharpness`, `domainFit`, `handoffUtility`, `rigorAdaptability` (0 = adapts to complexity/rigor levels, 2 = single-weight), `enforcementStrength` (0 = behavioral rules have structural teeth; 2 = important rules are prose-only with no enforcement mechanism), and `modernizationDiscipline` (0 = every valueInventory item preserved, equivalently replaced with justification, or dropped with justification; 2 = items missing or replaced with weaker versions without justification
|
|
486
|
+
"Score these dimensions 0-2 with one sentence of evidence each: `voiceClarity`, `ceremonyLevel`, `loopSoundness`, `delegationBoundedness`, `artifactClarity`, `taskEffectiveness`, `falseConfidenceResistance`, `stateMinimality`, `coverageSharpness`, `domainFit`, `handoffUtility`, `rigorAdaptability` (0 = adapts to complexity/rigor levels, 2 = single-weight), `enforcementStrength` (0 = behavioral rules have structural teeth; 2 = important rules are prose-only with no enforcement mechanism), and `modernizationDiscipline` (0 = every valueInventory item preserved, equivalently replaced with justification, or dropped with justification; 2 = items missing or replaced with weaker versions without justification — score 0 for create mode).",
|
|
479
487
|
"If delegation is available and rigor is THOROUGH, run an adversarial review bundle with these lenses: `engine_native_reviewer`, `task_effectiveness_reviewer`, `state_economy_reviewer`, `false_confidence_reviewer`, `domain_fit_reviewer`, and `maintainer_reviewer`.",
|
|
480
488
|
"Synthesize what the review confirmed, what it challenged, and what changed your mind.",
|
|
481
489
|
"When scoring `falseConfidenceResistance`, explicitly check: do the workflow's quality gates protect edge cases and degraded paths, or only the happy path? A workflow that passes its own checks on ideal input but fails silently on minimal or unexpected input scores 2.",
|
|
@@ -513,7 +521,7 @@
|
|
|
513
521
|
"var": "authoringMode",
|
|
514
522
|
"equals": "modernize_existing"
|
|
515
523
|
},
|
|
516
|
-
"text": "For modernize_existing: add a heritage_reviewer to the adversarial bundle. Its job is to check each valueInventory item and find what was lost or weakened
|
|
524
|
+
"text": "For modernize_existing: add a heritage_reviewer to the adversarial bundle. Its job is to check each valueInventory item and find what was lost or weakened — it ignores format improvements. It must answer: which enforcement mechanisms are now prose-only? Which domain knowledge items are absent? Which behavioral rules were removed without equivalent replacement? Heritage_reviewer findings drive enforcementStrength and modernizationDiscipline scores."
|
|
517
525
|
}
|
|
518
526
|
],
|
|
519
527
|
"requireConfirmation": false
|
|
@@ -572,6 +580,29 @@
|
|
|
572
580
|
}
|
|
573
581
|
]
|
|
574
582
|
},
|
|
583
|
+
{
|
|
584
|
+
"id": "phase-7a-assign-tags",
|
|
585
|
+
"title": "Phase 7a: Assign Tags",
|
|
586
|
+
"promptBlocks": {
|
|
587
|
+
"goal": "Register the workflow in spec/workflow-tags.json by assigning 1-3 tags from the closed tag set.",
|
|
588
|
+
"procedure": [
|
|
589
|
+
"Read spec/workflow-tags.json to see the available tags and their 'when' phrases.",
|
|
590
|
+
"Based on the workflow's purpose and description, select 1-3 tags from the closed set (coding, review_audit, investigation, design, documentation, tickets, learning, routines, authoring).",
|
|
591
|
+
"Add the workflow ID as a new entry under 'workflows' in spec/workflow-tags.json: { \"tags\": [\"<tag1>\"] }.",
|
|
592
|
+
"If the workflow is a test fixture or internal utility not meant for end-user discovery, add 'hidden': true.",
|
|
593
|
+
"Save the file. Do not modify any other field in the tags file."
|
|
594
|
+
],
|
|
595
|
+
"constraints": [
|
|
596
|
+
"Only use tags from the closed set. Do not invent new tags.",
|
|
597
|
+
"If the workflow already has an entry, update it rather than adding a duplicate.",
|
|
598
|
+
"Tags should reflect what the workflow does, not what it is named."
|
|
599
|
+
],
|
|
600
|
+
"outputRequired": {
|
|
601
|
+
"notesMarkdown": "List the assigned tags and a one-line justification for each."
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
"requireConfirmation": false
|
|
605
|
+
},
|
|
575
606
|
{
|
|
576
607
|
"id": "phase-7-final-trust-handoff",
|
|
577
608
|
"title": "Phase 7: Final Trust Handoff",
|
|
@@ -581,7 +612,7 @@
|
|
|
581
612
|
"Keep it concise. The workflow file is the deliverable, not the summary."
|
|
582
613
|
],
|
|
583
614
|
"procedure": [
|
|
584
|
-
"Stamp the workflow file: read the current `version` from `spec/authoring-spec.json` and write `validatedAgainstSpecVersion: <N>` as a top-level field in the workflow JSON. Commit the change
|
|
615
|
+
"Stamp the workflow file: read the current `version` from `spec/authoring-spec.json` and write `validatedAgainstSpecVersion: <N>` as a top-level field in the workflow JSON. Commit the change — the stamp has no effect if only saved locally.",
|
|
585
616
|
"State the workflow file path and name, whether it was created or modernized, and what it does in one sentence.",
|
|
586
617
|
"Summarize the step structure, loops, confirmations, and delegation profile.",
|
|
587
618
|
"Report validation status, authoring-integrity status, and outcome-effectiveness status.",
|
|
@@ -599,5 +630,6 @@
|
|
|
599
630
|
"notesOptional": true,
|
|
600
631
|
"requireConfirmation": false
|
|
601
632
|
}
|
|
602
|
-
]
|
|
633
|
+
],
|
|
634
|
+
"validatedAgainstSpecVersion": 3
|
|
603
635
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "wr.discovery",
|
|
3
|
-
"name": "Discovery Workflow (Bundled
|
|
3
|
+
"name": "Discovery Workflow (Bundled \u2022 Exploration + Design Synthesis)",
|
|
4
4
|
"version": "3.1.0",
|
|
5
|
-
"description": "Use this
|
|
5
|
+
"description": "Use this to explore and think through a problem end-to-end. Moves between landscape exploration, problem framing, candidate generation, adversarial challenge, and uncertainty resolution.",
|
|
6
6
|
"recommendedPreferences": {
|
|
7
7
|
"recommendedAutonomy": "guided",
|
|
8
8
|
"recommendedRiskPolicy": "conservative"
|
|
@@ -53,7 +53,10 @@
|
|
|
53
53
|
"goal": "Figure out what I actually need help with, then recommend the best path through this workflow.",
|
|
54
54
|
"constraints": [
|
|
55
55
|
[
|
|
56
|
-
{
|
|
56
|
+
{
|
|
57
|
+
"kind": "ref",
|
|
58
|
+
"refId": "wr.refs.notes_first_durability"
|
|
59
|
+
}
|
|
57
60
|
],
|
|
58
61
|
"Use tools to answer your own questions whenever possible.",
|
|
59
62
|
"Recommend a path with rationale instead of making me pick cold.",
|
|
@@ -63,7 +66,8 @@
|
|
|
63
66
|
"Capture: `problemStatement`, `desiredOutcome`, `coreConstraints`, `antiGoals`, `primaryUncertainty`, `knownApproaches`, `importantStakeholders`, `rigorMode`, `automationLevel`, `pathRecommendation`, `pathRationale`, `designDocPath`.",
|
|
64
67
|
"Choose `landscape_first` when my dominant need is understanding the current landscape or comparing options. Choose `full_spectrum` when both landscape grounding and reframing are needed. Choose `design_first` when the dominant risk is solving the wrong problem or shaping the wrong concept.",
|
|
65
68
|
"Create or update `designDocPath` with sections for Context / Ask, Path Recommendation, Constraints / Anti-goals, Landscape Packet, Problem Frame Packet, Candidate Directions, Challenge Notes, Resolution Notes, Decision Log, and Final Summary.",
|
|
66
|
-
"Set these keys in the next `continue_workflow` call's `context` object: `problemStatement`, `desiredOutcome`, `coreConstraints`, `antiGoals`, `primaryUncertainty`, `knownApproaches`, `importantStakeholders`, `rigorMode`, `automationLevel`, `pathRecommendation`, `pathRationale`, `designDocPath`."
|
|
69
|
+
"Set these keys in the next `continue_workflow` call's `context` object: `problemStatement`, `desiredOutcome`, `coreConstraints`, `antiGoals`, `primaryUncertainty`, `knownApproaches`, `importantStakeholders`, `rigorMode`, `automationLevel`, `pathRecommendation`, `pathRationale`, `designDocPath`.",
|
|
70
|
+
"Also set `goal` in the context object: one sentence describing what you are trying to accomplish. This populates the session title in the Workspace console immediately."
|
|
67
71
|
],
|
|
68
72
|
"verify": [
|
|
69
73
|
"The chosen path is justified against the other two, not just named.",
|
|
@@ -72,8 +76,14 @@
|
|
|
72
76
|
},
|
|
73
77
|
"requireConfirmation": {
|
|
74
78
|
"or": [
|
|
75
|
-
{
|
|
76
|
-
|
|
79
|
+
{
|
|
80
|
+
"var": "pathRecommendation",
|
|
81
|
+
"equals": "full_spectrum"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"var": "rigorMode",
|
|
85
|
+
"equals": "THOROUGH"
|
|
86
|
+
}
|
|
77
87
|
]
|
|
78
88
|
}
|
|
79
89
|
},
|
|
@@ -84,7 +94,10 @@
|
|
|
84
94
|
"goal": "Figure out what capabilities are actually available and set up the human artifact strategy I need.",
|
|
85
95
|
"constraints": [
|
|
86
96
|
[
|
|
87
|
-
{
|
|
97
|
+
{
|
|
98
|
+
"kind": "ref",
|
|
99
|
+
"refId": "wr.refs.notes_first_durability"
|
|
100
|
+
}
|
|
88
101
|
],
|
|
89
102
|
"Probe capability availability through real work or explicit checks, then record the result structurally.",
|
|
90
103
|
"If web browsing or delegation is unavailable, keep going with the best fallback and record the gap."
|
|
@@ -112,7 +125,10 @@
|
|
|
112
125
|
"goal": "Build the landscape understanding needed for a landscape-first pass.",
|
|
113
126
|
"constraints": [
|
|
114
127
|
[
|
|
115
|
-
{
|
|
128
|
+
{
|
|
129
|
+
"kind": "ref",
|
|
130
|
+
"refId": "wr.refs.parallelize_cognition_serialize_synthesis"
|
|
131
|
+
}
|
|
116
132
|
],
|
|
117
133
|
"If web browsing is available, use it for current-state grounding; otherwise fall back explicitly and mark the evidence gap.",
|
|
118
134
|
"Surface the main existing approaches, hard constraints, notable contradictions, and strongest evidence gaps before moving on."
|
|
@@ -144,7 +160,10 @@
|
|
|
144
160
|
"goal": "Build strong but bounded landscape understanding for a full-spectrum pass.",
|
|
145
161
|
"constraints": [
|
|
146
162
|
[
|
|
147
|
-
{
|
|
163
|
+
{
|
|
164
|
+
"kind": "ref",
|
|
165
|
+
"refId": "wr.refs.parallelize_cognition_serialize_synthesis"
|
|
166
|
+
}
|
|
148
167
|
],
|
|
149
168
|
"If web browsing is available, use it for current-state grounding; otherwise fall back explicitly and mark the evidence gap.",
|
|
150
169
|
"Go broad enough to avoid reinventing the obvious, but do not let research sprawl crowd out framing and synthesis."
|
|
@@ -176,7 +195,10 @@
|
|
|
176
195
|
"goal": "Do the lightest landscape pass that still keeps the design-first work grounded.",
|
|
177
196
|
"constraints": [
|
|
178
197
|
[
|
|
179
|
-
{
|
|
198
|
+
{
|
|
199
|
+
"kind": "ref",
|
|
200
|
+
"refId": "wr.refs.parallelize_cognition_serialize_synthesis"
|
|
201
|
+
}
|
|
180
202
|
],
|
|
181
203
|
"Do not skip the basics: surface the main existing approaches, hard constraints, and obvious contradictions.",
|
|
182
204
|
"Keep this lean unless the evidence clearly says the landscape is more important than the framing."
|
|
@@ -208,7 +230,10 @@
|
|
|
208
230
|
"goal": "Keep the framing lean, but do not skip the people and tensions that could change the recommendation.",
|
|
209
231
|
"constraints": [
|
|
210
232
|
[
|
|
211
|
-
{
|
|
233
|
+
{
|
|
234
|
+
"kind": "ref",
|
|
235
|
+
"refId": "wr.refs.parallelize_cognition_serialize_synthesis"
|
|
236
|
+
}
|
|
212
237
|
],
|
|
213
238
|
"Do not silently promote assumptions into facts.",
|
|
214
239
|
"Even in a landscape-first pass, capture the core tension, primary stakeholders, success criteria, and what could make the framing wrong."
|
|
@@ -240,7 +265,10 @@
|
|
|
240
265
|
"goal": "Build a strong problem frame that can stand alongside the landscape work.",
|
|
241
266
|
"constraints": [
|
|
242
267
|
[
|
|
243
|
-
{
|
|
268
|
+
{
|
|
269
|
+
"kind": "ref",
|
|
270
|
+
"refId": "wr.refs.parallelize_cognition_serialize_synthesis"
|
|
271
|
+
}
|
|
244
272
|
],
|
|
245
273
|
"Do not silently promote assumptions into facts.",
|
|
246
274
|
"Go strong on framing here without bloating the work into ceremony."
|
|
@@ -272,7 +300,10 @@
|
|
|
272
300
|
"goal": "Go deep on people, tensions, and framing risk before you move into solution shaping.",
|
|
273
301
|
"constraints": [
|
|
274
302
|
[
|
|
275
|
-
{
|
|
303
|
+
{
|
|
304
|
+
"kind": "ref",
|
|
305
|
+
"refId": "wr.refs.parallelize_cognition_serialize_synthesis"
|
|
306
|
+
}
|
|
276
307
|
],
|
|
277
308
|
"Do not silently promote assumptions into facts.",
|
|
278
309
|
"This is a deep framing pass. Surface the strongest tensions, success criteria, and what could make the framing wrong."
|
|
@@ -321,8 +352,14 @@
|
|
|
321
352
|
},
|
|
322
353
|
"requireConfirmation": {
|
|
323
354
|
"or": [
|
|
324
|
-
{
|
|
325
|
-
|
|
355
|
+
{
|
|
356
|
+
"var": "pathChangedAfterContext",
|
|
357
|
+
"equals": true
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"var": "rigorMode",
|
|
361
|
+
"equals": "THOROUGH"
|
|
362
|
+
}
|
|
326
363
|
]
|
|
327
364
|
}
|
|
328
365
|
},
|
|
@@ -333,7 +370,10 @@
|
|
|
333
370
|
"goal": "Combine the landscape packet and problem frame into a coherent decision shape before you generate candidates.",
|
|
334
371
|
"constraints": [
|
|
335
372
|
[
|
|
336
|
-
{
|
|
373
|
+
{
|
|
374
|
+
"kind": "ref",
|
|
375
|
+
"refId": "wr.refs.synthesis_under_disagreement"
|
|
376
|
+
}
|
|
337
377
|
],
|
|
338
378
|
"If the landscape and framing stories disagree, treat that disagreement as first-class work.",
|
|
339
379
|
"State what kind of uncertainty remains: recommendation uncertainty, research uncertainty, or prototype-learning uncertainty."
|
|
@@ -361,9 +401,18 @@
|
|
|
361
401
|
"id": "p2-challenge-deleg",
|
|
362
402
|
"when": {
|
|
363
403
|
"and": [
|
|
364
|
-
{
|
|
365
|
-
|
|
366
|
-
|
|
404
|
+
{
|
|
405
|
+
"var": "needsChallenge",
|
|
406
|
+
"equals": true
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"var": "delegationAvailable",
|
|
410
|
+
"equals": true
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"var": "rigorMode",
|
|
414
|
+
"not_equals": "QUICK"
|
|
415
|
+
}
|
|
367
416
|
]
|
|
368
417
|
},
|
|
369
418
|
"text": "Also decide whether a delegated challenge is worth the extra step. If yes, spawn ONE WorkRail Executor running `routine-hypothesis-challenge` against the current framing, then synthesize it yourself. If not, record why your own challenge is enough."
|
|
@@ -479,7 +528,10 @@
|
|
|
479
528
|
"goal": "Read `design-candidates.md`, challenge the leading option, and make the final selection for me.",
|
|
480
529
|
"constraints": [
|
|
481
530
|
[
|
|
482
|
-
{
|
|
531
|
+
{
|
|
532
|
+
"kind": "ref",
|
|
533
|
+
"refId": "wr.refs.adversarial_challenge_rules"
|
|
534
|
+
}
|
|
483
535
|
],
|
|
484
536
|
"You own the selection. Candidate generation output is evidence, not the final decision.",
|
|
485
537
|
"If the leading option no longer looks best after challenge, switch deliberately rather than defending sunk cost."
|
|
@@ -522,8 +574,14 @@
|
|
|
522
574
|
],
|
|
523
575
|
"requireConfirmation": {
|
|
524
576
|
"or": [
|
|
525
|
-
{
|
|
526
|
-
|
|
577
|
+
{
|
|
578
|
+
"var": "automationLevel",
|
|
579
|
+
"equals": "Low"
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
"var": "pathRecommendation",
|
|
583
|
+
"equals": "full_spectrum"
|
|
584
|
+
}
|
|
527
585
|
]
|
|
528
586
|
}
|
|
529
587
|
},
|
|
@@ -533,9 +591,18 @@
|
|
|
533
591
|
"title": "Phase 4: Direction Review Loop",
|
|
534
592
|
"runCondition": {
|
|
535
593
|
"or": [
|
|
536
|
-
{
|
|
537
|
-
|
|
538
|
-
|
|
594
|
+
{
|
|
595
|
+
"var": "rigorMode",
|
|
596
|
+
"not_equals": "QUICK"
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"var": "pathRecommendation",
|
|
600
|
+
"equals": "full_spectrum"
|
|
601
|
+
},
|
|
602
|
+
{
|
|
603
|
+
"var": "pathRecommendation",
|
|
604
|
+
"equals": "design_first"
|
|
605
|
+
}
|
|
539
606
|
]
|
|
540
607
|
},
|
|
541
608
|
"loop": {
|
|
@@ -615,7 +682,10 @@
|
|
|
615
682
|
"goal": "Decide whether you should end with a recommendation for me, a targeted research follow-up, or a prototype/test artifact.",
|
|
616
683
|
"constraints": [
|
|
617
684
|
[
|
|
618
|
-
{
|
|
685
|
+
{
|
|
686
|
+
"kind": "ref",
|
|
687
|
+
"refId": "wr.refs.adversarial_challenge_rules"
|
|
688
|
+
}
|
|
619
689
|
],
|
|
620
690
|
"Do the least work that can still resolve the most important remaining uncertainty. If a lighter pass would leave the main risk unresolved, do not choose it.",
|
|
621
691
|
"A prototype exists to falsify a direction, not to decorate it."
|
|
@@ -633,8 +703,14 @@
|
|
|
633
703
|
},
|
|
634
704
|
"requireConfirmation": {
|
|
635
705
|
"or": [
|
|
636
|
-
{
|
|
637
|
-
|
|
706
|
+
{
|
|
707
|
+
"var": "resolutionMode",
|
|
708
|
+
"equals": "prototype_test"
|
|
709
|
+
},
|
|
710
|
+
{
|
|
711
|
+
"var": "remainingGapCount",
|
|
712
|
+
"gt": 0
|
|
713
|
+
}
|
|
638
714
|
]
|
|
639
715
|
}
|
|
640
716
|
},
|
|
@@ -809,7 +885,10 @@
|
|
|
809
885
|
"goal": "Validate that you are ending with the right level of confidence and the right caveats for me.",
|
|
810
886
|
"constraints": [
|
|
811
887
|
[
|
|
812
|
-
{
|
|
888
|
+
{
|
|
889
|
+
"kind": "ref",
|
|
890
|
+
"refId": "wr.refs.synthesis_under_disagreement"
|
|
891
|
+
}
|
|
813
892
|
],
|
|
814
893
|
"Do not claim certainty you do not have.",
|
|
815
894
|
"If important contradictions or gaps remain, downgrade confidence and say so explicitly."
|
|
@@ -859,7 +938,10 @@
|
|
|
859
938
|
"goal": "Finalize the design doc and deliver a clear recommendation, artifact, or next-step direction to me.",
|
|
860
939
|
"constraints": [
|
|
861
940
|
[
|
|
862
|
-
{
|
|
941
|
+
{
|
|
942
|
+
"kind": "ref",
|
|
943
|
+
"refId": "wr.refs.notes_first_durability"
|
|
944
|
+
}
|
|
863
945
|
],
|
|
864
946
|
"Keep the final chat output concise.",
|
|
865
947
|
"Do not drift into production implementation planning beyond high-level next actions."
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-400:oklch(70.4% .191 22.216);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--tracking-wider:.05em;--leading-snug:1.375;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.z-50{z-index:50}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mr-\[420px\]{margin-right:420px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-\[500px\]{height:500px}.max-h-48{max-height:calc(var(--spacing) * 48)}.min-h-screen{min-height:100vh}.w-\[420px\]{width:420px}.w-full{width:100%}.max-w-\[200px\]{max-width:200px}.max-w-\[240px\]{max-width:240px}.max-w-\[360px\]{max-width:360px}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--status-in-progress\)\],.border-\[var\(--status-in-progress\)\]\/30{border-color:var(--status-in-progress)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--status-in-progress\)\]\/30{border-color:color-mix(in oklab,var(--status-in-progress) 30%,transparent)}}.border-blue-500\/20{border-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/20{border-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.border-green-500\/20{border-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.border-green-500\/20{border-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.border-orange-500\/20{border-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/20{border-color:color-mix(in oklab,var(--color-orange-500) 20%,transparent)}}.border-yellow-500\/40{border-color:#edb20066}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/40{border-color:color-mix(in oklab,var(--color-yellow-500) 40%,transparent)}}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--bg-card\)\]{background-color:var(--bg-card)}.bg-\[var\(--bg-primary\)\]{background-color:var(--bg-primary)}.bg-\[var\(--bg-secondary\)\]{background-color:var(--bg-secondary)}.bg-\[var\(--bg-tertiary\)\]{background-color:var(--bg-tertiary)}.bg-\[var\(--status-in-progress\)\]\/20{background-color:var(--status-in-progress)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--status-in-progress\)\]\/20{background-color:color-mix(in oklab,var(--status-in-progress) 20%,transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500) 10%,transparent)}}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--error\)\]{color:var(--error)}.text-\[var\(--status-in-progress\)\]{color:var(--status-in-progress)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-primary\)\]{color:var(--text-primary)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-\[var\(--warning\)\]{color:var(--warning)}.text-blue-400{color:var(--color-blue-400)}.text-green-400{color:var(--color-green-400)}.text-orange-400{color:var(--color-orange-400)}.text-red-400{color:var(--color-red-400)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.placeholder-\[var\(--text-muted\)\]::placeholder{color:var(--text-muted)}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-\[margin\]{transition-property:margin;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}@media(hover:hover){.group-hover\:text-\[var\(--accent\)\]:is(:where(.group):hover *){color:var(--accent)}.group-hover\:text-\[var\(--text-primary\)\]:is(:where(.group):hover *){color:var(--text-primary)}.group-hover\:text-\[var\(--text-secondary\)\]:is(:where(.group):hover *){color:var(--text-secondary)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:border-\[var\(--accent\)\]:hover{border-color:var(--accent)}.hover\:bg-\[var\(--bg-card\)\]:hover{background-color:var(--bg-card)}.hover\:text-\[var\(--text-primary\)\]:hover{color:var(--text-primary)}.hover\:text-\[var\(--text-secondary\)\]:hover{color:var(--text-secondary)}}.focus\:border-\[var\(--accent\)\]:focus{border-color:var(--accent)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}:root{--bg-primary:#0a0a0a;--bg-secondary:#141414;--bg-card:#1a1a1a;--border:#2a2a2a;--text-primary:#fafafa;--text-secondary:#a0a0a0;--text-muted:#666;--accent:#3b82f6;--accent-hover:#2563eb;--success:#22c55e;--warning:#eab308;--error:#ef4444;--blocked:#f97316}body{background:var(--bg-primary);color:var(--text-primary);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}.markdown-view{color:var(--text-secondary);word-break:break-word;font-size:.8125rem;line-height:1.6}.markdown-view h1,.markdown-view h2,.markdown-view h3,.markdown-view h4,.markdown-view h5,.markdown-view h6{color:var(--text-primary);margin:1em 0 .4em;font-weight:600;line-height:1.3}.markdown-view h1{font-size:1.1em}.markdown-view h2{font-size:1em}.markdown-view h3{font-size:.95em}.markdown-view h4,.markdown-view h5,.markdown-view h6{font-size:.9em}.markdown-view>:first-child{margin-top:0}.markdown-view p{margin:.5em 0}.markdown-view strong{color:var(--text-primary);font-weight:600}.markdown-view em{font-style:italic}.markdown-view a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.markdown-view ul{margin:.4em 0;padding-left:1.4em;list-style-type:disc}.markdown-view ol{margin:.4em 0;padding-left:1.4em;list-style-type:decimal}.markdown-view li{color:var(--text-secondary);margin:.15em 0}.markdown-view li::marker{color:var(--text-muted)}.markdown-view li>ul,.markdown-view li>ol{margin:.1em 0}.markdown-view li>ul{list-style-type:circle}.markdown-view code{background:var(--bg-primary);color:var(--text-primary);border-radius:3px;padding:.15em .35em;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.88em}.markdown-view pre{background:var(--bg-primary);border-radius:6px;margin:.5em 0;padding:.75em;overflow-x:auto}.markdown-view pre code{background:0 0;padding:0;font-size:.85em;line-height:1.5}.markdown-view blockquote{border-left:3px solid var(--border);color:var(--text-muted);margin:.5em 0;padding:.25em .75em}.markdown-view hr{border:none;border-top:1px solid var(--border);margin:.75em 0}.markdown-view table{border-collapse:collapse;width:100%;margin:.5em 0;font-size:.9em}.markdown-view th,.markdown-view td{border:1px solid var(--border);text-align:left;padding:.35em .6em}.markdown-view th{background:var(--bg-primary);color:var(--text-primary);font-weight:600}.markdown-view img{border-radius:4px;max-width:100%}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
|