@hivehub/rulebook 3.4.2 → 4.1.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.
Files changed (173) hide show
  1. package/.claude/commands/continue.md +33 -0
  2. package/.claude-plugin/marketplace.json +28 -29
  3. package/.claude-plugin/plugin.json +8 -8
  4. package/README.md +66 -144
  5. package/dist/agents/ralph-parser.d.ts +41 -1
  6. package/dist/agents/ralph-parser.d.ts.map +1 -1
  7. package/dist/agents/ralph-parser.js +202 -14
  8. package/dist/agents/ralph-parser.js.map +1 -1
  9. package/dist/cli/commands.d.ts +65 -0
  10. package/dist/cli/commands.d.ts.map +1 -1
  11. package/dist/cli/commands.js +837 -61
  12. package/dist/cli/commands.js.map +1 -1
  13. package/dist/core/agent-manager.d.ts +7 -0
  14. package/dist/core/agent-manager.d.ts.map +1 -1
  15. package/dist/core/agent-manager.js +150 -3
  16. package/dist/core/agent-manager.js.map +1 -1
  17. package/dist/core/claude-mcp.d.ts +17 -0
  18. package/dist/core/claude-mcp.d.ts.map +1 -1
  19. package/dist/core/claude-mcp.js +90 -6
  20. package/dist/core/claude-mcp.js.map +1 -1
  21. package/dist/core/config-manager.d.ts.map +1 -1
  22. package/dist/core/config-manager.js +40 -0
  23. package/dist/core/config-manager.js.map +1 -1
  24. package/dist/core/cursor-mdc-generator.d.ts +30 -0
  25. package/dist/core/cursor-mdc-generator.d.ts.map +1 -0
  26. package/dist/core/cursor-mdc-generator.js +98 -0
  27. package/dist/core/cursor-mdc-generator.js.map +1 -0
  28. package/dist/core/detector.d.ts +25 -1
  29. package/dist/core/detector.d.ts.map +1 -1
  30. package/dist/core/detector.js +321 -1
  31. package/dist/core/detector.js.map +1 -1
  32. package/dist/core/generator.d.ts +10 -0
  33. package/dist/core/generator.d.ts.map +1 -1
  34. package/dist/core/generator.js +177 -3
  35. package/dist/core/generator.js.map +1 -1
  36. package/dist/core/github-issues-importer.d.ts +82 -0
  37. package/dist/core/github-issues-importer.d.ts.map +1 -0
  38. package/dist/core/github-issues-importer.js +161 -0
  39. package/dist/core/github-issues-importer.js.map +1 -0
  40. package/dist/core/health-scorer.d.ts +39 -0
  41. package/dist/core/health-scorer.d.ts.map +1 -1
  42. package/dist/core/health-scorer.js +256 -13
  43. package/dist/core/health-scorer.js.map +1 -1
  44. package/dist/core/indexer/background-indexer.d.ts +27 -0
  45. package/dist/core/indexer/background-indexer.d.ts.map +1 -0
  46. package/dist/core/indexer/background-indexer.js +135 -0
  47. package/dist/core/indexer/background-indexer.js.map +1 -0
  48. package/dist/core/indexer/file-parser.d.ts +28 -0
  49. package/dist/core/indexer/file-parser.d.ts.map +1 -0
  50. package/dist/core/indexer/file-parser.js +171 -0
  51. package/dist/core/indexer/file-parser.js.map +1 -0
  52. package/dist/core/indexer/indexer-types.d.ts +35 -0
  53. package/dist/core/indexer/indexer-types.d.ts.map +1 -0
  54. package/dist/core/indexer/indexer-types.js +8 -0
  55. package/dist/core/indexer/indexer-types.js.map +1 -0
  56. package/dist/core/iteration-tracker.d.ts +28 -0
  57. package/dist/core/iteration-tracker.d.ts.map +1 -1
  58. package/dist/core/iteration-tracker.js +86 -0
  59. package/dist/core/iteration-tracker.js.map +1 -1
  60. package/dist/core/multi-tool-generator.d.ts +59 -0
  61. package/dist/core/multi-tool-generator.d.ts.map +1 -0
  62. package/dist/core/multi-tool-generator.js +157 -0
  63. package/dist/core/multi-tool-generator.js.map +1 -0
  64. package/dist/core/override-manager.d.ts +23 -0
  65. package/dist/core/override-manager.d.ts.map +1 -0
  66. package/dist/core/override-manager.js +82 -0
  67. package/dist/core/override-manager.js.map +1 -0
  68. package/dist/core/plans-manager.d.ts +46 -0
  69. package/dist/core/plans-manager.d.ts.map +1 -0
  70. package/dist/core/plans-manager.js +158 -0
  71. package/dist/core/plans-manager.js.map +1 -0
  72. package/dist/core/prd-generator.d.ts +12 -0
  73. package/dist/core/prd-generator.d.ts.map +1 -1
  74. package/dist/core/prd-generator.js +91 -2
  75. package/dist/core/prd-generator.js.map +1 -1
  76. package/dist/core/ralph-manager.d.ts +47 -1
  77. package/dist/core/ralph-manager.d.ts.map +1 -1
  78. package/dist/core/ralph-manager.js +107 -0
  79. package/dist/core/ralph-manager.js.map +1 -1
  80. package/dist/core/ralph-parallel.d.ts +55 -0
  81. package/dist/core/ralph-parallel.d.ts.map +1 -0
  82. package/dist/core/ralph-parallel.js +201 -0
  83. package/dist/core/ralph-parallel.js.map +1 -0
  84. package/dist/core/ralph-plan-checkpoint.d.ts +58 -0
  85. package/dist/core/ralph-plan-checkpoint.d.ts.map +1 -0
  86. package/dist/core/ralph-plan-checkpoint.js +154 -0
  87. package/dist/core/ralph-plan-checkpoint.js.map +1 -0
  88. package/dist/core/ralph-scripts.d.ts +12 -0
  89. package/dist/core/ralph-scripts.d.ts.map +1 -0
  90. package/dist/core/ralph-scripts.js +49 -0
  91. package/dist/core/ralph-scripts.js.map +1 -0
  92. package/dist/core/review-manager.d.ts +74 -0
  93. package/dist/core/review-manager.d.ts.map +1 -0
  94. package/dist/core/review-manager.js +371 -0
  95. package/dist/core/review-manager.js.map +1 -0
  96. package/dist/index.js +94 -2
  97. package/dist/index.js.map +1 -1
  98. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  99. package/dist/mcp/rulebook-server.js +117 -8
  100. package/dist/mcp/rulebook-server.js.map +1 -1
  101. package/dist/memory/memory-manager.d.ts +4 -1
  102. package/dist/memory/memory-manager.d.ts.map +1 -1
  103. package/dist/memory/memory-manager.js +33 -4
  104. package/dist/memory/memory-manager.js.map +1 -1
  105. package/dist/memory/memory-search.d.ts +2 -2
  106. package/dist/memory/memory-search.d.ts.map +1 -1
  107. package/dist/memory/memory-search.js +19 -0
  108. package/dist/memory/memory-search.js.map +1 -1
  109. package/dist/memory/memory-store.d.ts +13 -0
  110. package/dist/memory/memory-store.d.ts.map +1 -1
  111. package/dist/memory/memory-store.js +92 -1
  112. package/dist/memory/memory-store.js.map +1 -1
  113. package/dist/memory/memory-types.d.ts +15 -0
  114. package/dist/memory/memory-types.d.ts.map +1 -1
  115. package/dist/types.d.ts +55 -2
  116. package/dist/types.d.ts.map +1 -1
  117. package/package.json +1 -1
  118. package/templates/agents/implementer.md +35 -0
  119. package/templates/agents/researcher.md +34 -0
  120. package/templates/agents/team-lead.md +34 -0
  121. package/templates/agents/tester.md +42 -0
  122. package/templates/ci/rulebook-review.yml +26 -0
  123. package/templates/commands/rulebook-task-archive.md +24 -0
  124. package/templates/core/AGENTS_LEAN.md +25 -0
  125. package/templates/core/AGENTS_OVERRIDE.md +16 -0
  126. package/templates/core/MULTI_AGENT.md +74 -0
  127. package/templates/core/PLANS.md +28 -0
  128. package/templates/core/RALPH.md +45 -4
  129. package/templates/core/RULEBOOK.md +42 -0
  130. package/templates/ides/CONTINUE_RULES.md +16 -0
  131. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -0
  132. package/templates/ides/GEMINI_RULES.md +17 -0
  133. package/templates/ides/WINDSURF_RULES.md +14 -0
  134. package/templates/ides/cursor-mdc/go.mdc +24 -0
  135. package/templates/ides/cursor-mdc/python.mdc +24 -0
  136. package/templates/ides/cursor-mdc/quality.mdc +25 -0
  137. package/templates/ides/cursor-mdc/ralph.mdc +39 -0
  138. package/templates/ides/cursor-mdc/rulebook.mdc +38 -0
  139. package/templates/ides/cursor-mdc/rust.mdc +24 -0
  140. package/templates/ides/cursor-mdc/typescript.mdc +25 -0
  141. package/templates/modules/sequential-thinking.md +42 -0
  142. package/templates/ralph/ralph-history.bat +4 -0
  143. package/templates/ralph/ralph-history.sh +5 -0
  144. package/templates/ralph/ralph-init.bat +5 -0
  145. package/templates/ralph/ralph-init.sh +5 -0
  146. package/templates/ralph/ralph-pause.bat +5 -0
  147. package/templates/ralph/ralph-pause.sh +5 -0
  148. package/templates/ralph/ralph-run.bat +5 -0
  149. package/templates/ralph/ralph-run.sh +5 -0
  150. package/templates/ralph/ralph-status.bat +4 -0
  151. package/templates/ralph/ralph-status.sh +5 -0
  152. package/templates/services/DATADOG.md +26 -0
  153. package/templates/services/DOCKER.md +124 -0
  154. package/templates/services/DOCKER_COMPOSE.md +168 -0
  155. package/templates/services/HELM.md +194 -0
  156. package/templates/services/KUBERNETES.md +208 -0
  157. package/templates/services/OPENTELEMETRY.md +25 -0
  158. package/templates/services/PINO.md +24 -0
  159. package/templates/services/PROMETHEUS.md +33 -0
  160. package/templates/services/SENTRY.md +23 -0
  161. package/templates/services/WINSTON.md +30 -0
  162. package/dist/core/openspec-manager.d.ts +0 -133
  163. package/dist/core/openspec-manager.d.ts.map +0 -1
  164. package/dist/core/openspec-manager.js +0 -596
  165. package/dist/core/openspec-manager.js.map +0 -1
  166. package/dist/core/openspec-migrator.d.ts +0 -27
  167. package/dist/core/openspec-migrator.d.ts.map +0 -1
  168. package/dist/core/openspec-migrator.js +0 -262
  169. package/dist/core/openspec-migrator.js.map +0 -1
  170. package/dist/core/test-task-manager.d.ts +0 -49
  171. package/dist/core/test-task-manager.d.ts.map +0 -1
  172. package/dist/core/test-task-manager.js +0 -121
  173. package/dist/core/test-task-manager.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ <!-- PINO:START -->
2
+ # Pino — Structured Logging
3
+
4
+ ## Configuration
5
+ - Create singleton logger instance: `const logger = pino({ level: process.env.LOG_LEVEL || 'info' })`
6
+ - Use child loggers for request context: `req.log = logger.child({ requestId: req.id })`
7
+ - Configure pretty print for development only: `transport: { target: 'pino-pretty' }` (only when `NODE_ENV !== 'production'`)
8
+
9
+ ## Log Levels
10
+ - `error`: Unexpected errors requiring immediate attention
11
+ - `warn`: Recoverable errors, deprecated usage, approaching limits
12
+ - `info`: Significant state changes, important business events
13
+ - `debug`: Detailed flow for troubleshooting (disabled in production)
14
+ - `trace`: High-frequency diagnostic data (never in production)
15
+
16
+ ## Structured Fields
17
+ - Always include: `{ service, version, requestId, userId }` in request context
18
+ - Never log: passwords, tokens, credit cards, PII fields
19
+ - Log all outgoing HTTP calls with: `{ method, url, statusCode, duration }`
20
+
21
+ ## Performance
22
+ - Avoid `JSON.stringify()` in log calls — pino handles serialization
23
+ - Use `logger.isLevelEnabled('debug')` before expensive debug computations
24
+ <!-- PINO:END -->
@@ -0,0 +1,33 @@
1
+ <!-- PROMETHEUS:START -->
2
+ # Prometheus — Metrics
3
+
4
+ ## Setup
5
+ ```typescript
6
+ import { Registry, collectDefaultMetrics } from 'prom-client';
7
+ const registry = new Registry();
8
+ collectDefaultMetrics({ register: registry });
9
+ ```
10
+
11
+ Expose metrics endpoint:
12
+ ```typescript
13
+ app.get('/metrics', async (req, res) => {
14
+ res.set('Content-Type', registry.contentType);
15
+ res.end(await registry.metrics());
16
+ });
17
+ ```
18
+
19
+ ## Metric Types
20
+ - **Counter**: Monotonically increasing values (`http_requests_total`)
21
+ - **Gauge**: Values that go up and down (`active_connections`, memory usage)
22
+ - **Histogram**: Duration/size distributions (`http_request_duration_seconds`)
23
+ - **Summary**: Percentile calculations (use Histogram instead when possible)
24
+
25
+ ## Naming Conventions
26
+ - Format: `<namespace>_<metric_name>_<unit>` (e.g., `app_http_request_duration_seconds`)
27
+ - Use `_total` suffix for counters
28
+ - Include all relevant labels: `{ method, route, status_code }`
29
+
30
+ ## Alerting
31
+ - Define recording rules for frequently queried expressions
32
+ - Set alert thresholds: error rate > 5%, p99 latency > 2s, memory > 80%
33
+ <!-- PROMETHEUS:END -->
@@ -0,0 +1,23 @@
1
+ <!-- SENTRY:START -->
2
+ # Sentry — Error Tracking
3
+
4
+ ## Configuration
5
+ - Initialize Sentry at application entry point BEFORE other imports
6
+ - Set `dsn` from environment variable: `process.env.SENTRY_DSN`
7
+ - Configure `environment` from `NODE_ENV`
8
+ - Enable `tracesSampleRate: 0.1` in production (not 1.0)
9
+
10
+ ## Error Capture
11
+ - Wrap route handlers with Sentry error middleware
12
+ - Use `Sentry.captureException(err)` in catch blocks for unexpected errors
13
+ - Add custom context: `Sentry.setContext('user', { id, email })`
14
+ - Never log sensitive data (passwords, tokens) in Sentry context
15
+
16
+ ## Release Tracking
17
+ - Set `release` using git commit SHA: `process.env.SENTRY_RELEASE`
18
+ - Run `sentry-cli releases` in CI to associate commits with releases
19
+
20
+ ## Performance
21
+ - Use `Sentry.startTransaction()` for tracking custom operations
22
+ - Add distributed tracing headers to internal service calls
23
+ <!-- SENTRY:END -->
@@ -0,0 +1,30 @@
1
+ <!-- WINSTON:START -->
2
+ # Winston — Logging
3
+
4
+ ## Configuration
5
+ ```typescript
6
+ const logger = winston.createLogger({
7
+ level: process.env.LOG_LEVEL || 'info',
8
+ format: winston.format.combine(
9
+ winston.format.timestamp(),
10
+ winston.format.json() // Always JSON in production
11
+ ),
12
+ transports: [
13
+ new winston.transports.Console(),
14
+ new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
15
+ ],
16
+ });
17
+ ```
18
+
19
+ ## Log Levels
20
+ - Use semantic levels: `error`, `warn`, `info`, `http`, `debug`
21
+ - Set `level: 'info'` in production; `level: 'debug'` in development
22
+
23
+ ## Metadata
24
+ - Include structured metadata: `logger.info('message', { userId, requestId, duration })`
25
+ - Never log sensitive data (tokens, passwords, credit card numbers)
26
+
27
+ ## Custom Transports
28
+ - Add external service transports (Datadog, Loggly) as additional transports
29
+ - Always keep console transport as fallback
30
+ <!-- WINSTON:END -->
@@ -1,133 +0,0 @@
1
- import type { OpenSpecData, OpenSpecTask } from '../types.js';
2
- export declare class OpenSpecManager {
3
- private openspecPath;
4
- private changesPath;
5
- private data;
6
- private onLog?;
7
- constructor(projectRoot: string);
8
- /**
9
- * Set callback for logging (used by watcher UI)
10
- */
11
- setLogCallback(callback: (type: 'info' | 'success' | 'warning' | 'error', message: string) => void): void;
12
- /**
13
- * Initialize OpenSpec directory structure (deprecated - no longer creates directories)
14
- * OpenSpec is legacy; only operates on existing directories.
15
- */
16
- initialize(): Promise<void>;
17
- /**
18
- * Load OpenSpec data from changes directory
19
- */
20
- loadOpenSpec(): Promise<OpenSpecData>;
21
- /**
22
- * Save OpenSpec data (tasks are managed in changes, so this is mostly for metadata)
23
- */
24
- saveOpenSpec(): Promise<void>;
25
- /**
26
- * Sync task status on agent start
27
- * Loads all tasks and ensures the data is fresh
28
- */
29
- syncTaskStatus(): Promise<void>;
30
- /**
31
- * Load tasks from all changes directories
32
- */
33
- private loadTasksFromChanges;
34
- /**
35
- * Parse tasks from markdown content
36
- */
37
- private parseTasksFromMarkdown;
38
- /**
39
- * Get tasks ordered by priority
40
- */
41
- getTasksByPriority(): Promise<OpenSpecTask[]>;
42
- /**
43
- * Get current active task
44
- */
45
- getCurrentTask(): Promise<OpenSpecTask | null>;
46
- /**
47
- * Set current task
48
- */
49
- setCurrentTask(taskId: string): Promise<void>;
50
- /**
51
- * Update task status
52
- */
53
- updateTaskStatus(taskId: string, status: OpenSpecTask['status']): Promise<void>;
54
- /**
55
- * Mark task as complete
56
- */
57
- markTaskComplete(taskId: string): Promise<void>;
58
- /**
59
- * Update task status in markdown files
60
- */
61
- private updateMarkdownTaskStatus;
62
- /**
63
- * Update task status in markdown content
64
- */
65
- private updateTaskInMarkdown;
66
- /**
67
- * Add new task
68
- */
69
- addTask(task: Omit<OpenSpecTask, 'id' | 'createdAt' | 'updatedAt' | 'attempts'>): Promise<string>;
70
- /**
71
- * Get task by ID
72
- */
73
- getTask(taskId: string): Promise<OpenSpecTask | null>;
74
- /**
75
- * Get task dependencies
76
- */
77
- getTaskDependencies(taskId: string): Promise<OpenSpecTask[]>;
78
- /**
79
- * Check if task dependencies are satisfied
80
- */
81
- areDependenciesSatisfied(taskId: string): Promise<boolean>;
82
- /**
83
- * Get next available task
84
- */
85
- getNextTask(): Promise<OpenSpecTask | null>;
86
- /**
87
- * Increment task attempts
88
- */
89
- incrementTaskAttempts(taskId: string): Promise<void>;
90
- /**
91
- * Get task statistics
92
- */
93
- getTaskStats(): Promise<{
94
- total: number;
95
- pending: number;
96
- inProgress: number;
97
- completed: number;
98
- failed: number;
99
- skipped: number;
100
- }>;
101
- /**
102
- * Generate ASCII dependency tree
103
- */
104
- generateDependencyTree(): Promise<string>;
105
- /**
106
- * Validate dependency graph for cycles
107
- */
108
- validateDependencyGraph(): Promise<{
109
- valid: boolean;
110
- cycles: string[][];
111
- }>;
112
- /**
113
- * Get tasks that can be executed in parallel
114
- */
115
- getParallelExecutableTasks(): Promise<OpenSpecTask[][]>;
116
- /**
117
- * Get execution order respecting dependencies
118
- */
119
- getExecutionOrder(): Promise<OpenSpecTask[]>;
120
- /**
121
- * Check if task can be started (dependencies satisfied)
122
- */
123
- canStartTask(taskId: string): Promise<boolean>;
124
- /**
125
- * Get blocking tasks (tasks that block the given task)
126
- */
127
- getBlockingTasks(taskId: string): Promise<OpenSpecTask[]>;
128
- }
129
- /**
130
- * Create a new OpenSpecManager instance
131
- */
132
- export declare function createOpenSpecManager(projectRoot: string): OpenSpecManager;
133
- //# sourceMappingURL=openspec-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openspec-manager.d.ts","sourceRoot":"","sources":["../../src/core/openspec-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS9D,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,KAAK,CAAC,CAA4E;gBAE9E,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAClF,IAAI;IAIP;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IAoC3C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBnC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBrC;;OAEG;YACW,oBAAoB;IAgClC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2F9B;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAOnD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAUpD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCrF;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;YACW,wBAAwB;IAmCtC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC,GACtE,OAAO,CAAC,MAAM,CAAC;IAkBlB;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAK3D;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAWlE;;OAEG;IACG,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKhE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAYjD;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAuBF;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IA2D/C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAA;KAAE,CAAC;IA8ChF;;OAEG;IACG,0BAA0B,IAAI,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;IAuC7D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAWlD;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAUhE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAE1E"}