whipped 0.3.0 → 0.5.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/mcp-server.js
CHANGED
|
@@ -33,10 +33,11 @@ function highestWorkflowLevel(workflow) {
|
|
|
33
33
|
}
|
|
34
34
|
return LEVEL_ORDER[bestIdx] ?? "medium";
|
|
35
35
|
}
|
|
36
|
-
var runtimeAgentIdSchema, effortLevelSchema, agentModelChoiceSchema, workflowSlotTypeSchema, tierLevelSchema, LEVEL_ORDER, modelPairSchema, pairSelectionModeSchema, SLOT_TOOL_IDS, slotToolSchema, slotModelConfigSchema, cardModelConfigSchema, promptValueSchema, EMPTY_INLINE_PROMPT, workflowSlotSchema, DEFAULT_MODEL_PAIR, DEFAULT_SLOT_MODEL_FIELDS, workflowSchema, DEFAULT_WORKFLOW, DEFAULT_STORY_WORKFLOW, DEFAULT_GIT_INSTRUCTIONS, runtimeBoardColumnIdSchema, BOARD_COLUMNS, reviewActorSchema, reviewIssueSchema, reviewAttachmentSchema, runtimeReviewCommentSchema, runtimeActivityEntrySchema, runtimeTaskSessionStateSchema, runtimeTerminalSessionEntrySchema, runtimeCardPrioritySchema, cardTypeSchema, runtimePrMetaSchema, runtimeBoardCardSchema, runtimeBoardColumnSchema, runtimeBoardDataSchema, runtimeGlobalConfigSchema, runtimeGithubConfigSchema, runtimeWorktreeSetupSchema, runtimeProjectSecretSchema, runtimeProjectConfigSchema, runtimeWorkspaceStateResponseSchema, runtimeWorkspaceStateSaveRequestSchema, runtimeVisualElementSchema, runtimeVisualCommentSchema, runtimeCardCreateRequestSchema, runtimeCardMoveRequestSchema, runtimeCardUpdateRequestSchema, memoryScopeSchema, memoryTypeSchema, memorySourceTypeSchema, memoryStatusSchema, runtimeMemoryOriginAgentSchema, runtimeMemorySchema, recurringScheduleKindSchema, recurringScheduleSchema, recurringRunStatusSchema, recurringRunTriggerSchema, recurringAgentRunSchema, recurringAgentSchema, recurringAgentCreateRequestSchema, recurringAgentUpdateRequestSchema, projectFolderSchema, topLevelItemSchema, projectsLayoutSchema, runtimeProjectSchema;
|
|
36
|
+
var ASSISTANT_AGENT_PREFIX, runtimeAgentIdSchema, effortLevelSchema, agentModelChoiceSchema, workflowSlotTypeSchema, tierLevelSchema, LEVEL_ORDER, modelPairSchema, pairSelectionModeSchema, SLOT_TOOL_IDS, slotToolSchema, slotModelConfigSchema, cardModelConfigSchema, promptValueSchema, EMPTY_INLINE_PROMPT, workflowSlotSchema, DEFAULT_MODEL_PAIR, DEFAULT_SLOT_MODEL_FIELDS, workflowSchema, DEFAULT_WORKFLOW, DEFAULT_STORY_WORKFLOW, DEFAULT_GIT_INSTRUCTIONS, runtimeBoardColumnIdSchema, BOARD_COLUMNS, reviewActorSchema, reviewIssueSchema, reviewAttachmentSchema, runtimeReviewCommentSchema, runtimeActivityEntrySchema, runtimeTaskSessionStateSchema, runtimeTerminalSessionEntrySchema, runtimeCardPrioritySchema, cardTypeSchema, runtimePrMetaSchema, runtimeBoardCardSchema, runtimeBoardColumnSchema, runtimeBoardDataSchema, runtimeGlobalConfigSchema, runtimeGithubConfigSchema, runtimeWorktreeSetupSchema, runtimeProjectSecretSchema, runtimeProjectConfigSchema, runtimeWorkspaceStateResponseSchema, runtimeWorkspaceStateSaveRequestSchema, runtimeVisualElementSchema, runtimeVisualCommentSchema, runtimeCardCreateRequestSchema, runtimeBulkCardImportItemSchema, runtimeBulkCardsCreateRequestSchema, runtimeCardMoveRequestSchema, runtimeCardUpdateRequestSchema, memoryScopeSchema, memoryTypeSchema, memorySourceTypeSchema, memoryStatusSchema, runtimeMemoryOriginAgentSchema, runtimeMemorySchema, recurringScheduleKindSchema, recurringScheduleSchema, recurringRunStatusSchema, recurringRunTriggerSchema, recurringAgentRunSchema, recurringAgentSchema, recurringAgentCreateRequestSchema, recurringAgentUpdateRequestSchema, projectFolderSchema, topLevelItemSchema, projectsLayoutSchema, runtimeProjectSchema;
|
|
37
37
|
var init_api_contract = __esm({
|
|
38
38
|
"src/core/api-contract.ts"() {
|
|
39
39
|
"use strict";
|
|
40
|
+
ASSISTANT_AGENT_PREFIX = "__assistant__:";
|
|
40
41
|
runtimeAgentIdSchema = z.enum(["claude", "codex", "opencode", "cursor", "mimo"]);
|
|
41
42
|
effortLevelSchema = z.enum(["low", "medium", "high", "xhigh", "max"]);
|
|
42
43
|
agentModelChoiceSchema = z.object({
|
|
@@ -465,6 +466,14 @@ Do NOT include:
|
|
|
465
466
|
modelConfig: cardModelConfigSchema.optional(),
|
|
466
467
|
activeLevel: tierLevelSchema.optional()
|
|
467
468
|
});
|
|
469
|
+
runtimeBulkCardImportItemSchema = runtimeCardCreateRequestSchema.extend({
|
|
470
|
+
tempId: z.string().optional()
|
|
471
|
+
});
|
|
472
|
+
runtimeBulkCardsCreateRequestSchema = z.object({
|
|
473
|
+
// Batch-wide base branch; an item's own baseRef overrides it, else resolved server-side.
|
|
474
|
+
baseRef: z.string().optional(),
|
|
475
|
+
cards: z.array(runtimeBulkCardImportItemSchema).min(1)
|
|
476
|
+
});
|
|
468
477
|
runtimeCardMoveRequestSchema = z.object({
|
|
469
478
|
cardId: z.string(),
|
|
470
479
|
targetColumnId: runtimeBoardColumnIdSchema,
|
|
@@ -793,6 +802,7 @@ __export(workspace_state_exports, {
|
|
|
793
802
|
clearCardSession: () => clearCardSession,
|
|
794
803
|
closeAllOpenTerminalSessions: () => closeAllOpenTerminalSessions,
|
|
795
804
|
createCard: () => createCard,
|
|
805
|
+
createCardsBulk: () => createCardsBulk,
|
|
796
806
|
deleteCard: () => deleteCard,
|
|
797
807
|
downloadGithubImages: () => downloadGithubImages,
|
|
798
808
|
endTerminalSession: () => endTerminalSession,
|
|
@@ -1343,6 +1353,79 @@ async function createCard(workspaceId2, data, baseRef) {
|
|
|
1343
1353
|
tx();
|
|
1344
1354
|
return card;
|
|
1345
1355
|
}
|
|
1356
|
+
async function createCardsBulk(workspaceId2, items, baseRef) {
|
|
1357
|
+
const db = getDb();
|
|
1358
|
+
const now = Date.now();
|
|
1359
|
+
const projectConfig = loadProjectConfigInternal(workspaceId2);
|
|
1360
|
+
const realIds = items.map(() => generateTaskId());
|
|
1361
|
+
const tempIdToRealId = /* @__PURE__ */ new Map();
|
|
1362
|
+
items.forEach((item, i) => {
|
|
1363
|
+
if (item.tempId) tempIdToRealId.set(item.tempId, realIds[i]);
|
|
1364
|
+
});
|
|
1365
|
+
const resolveRef = (ref) => tempIdToRealId.get(ref) ?? ref;
|
|
1366
|
+
const cards = items.map((item, i) => {
|
|
1367
|
+
const type = item.type ?? "task";
|
|
1368
|
+
const columnId = item.columnId ?? "todo";
|
|
1369
|
+
const workflow = resolveWorkflowForCard(projectConfig.workflows, { workflowId: item.workflowId, type });
|
|
1370
|
+
const waitsFor = (item.waitsFor ?? []).map(resolveRef);
|
|
1371
|
+
const dependsOn = item.dependsOn ? resolveRef(item.dependsOn) : void 0;
|
|
1372
|
+
return {
|
|
1373
|
+
id: realIds[i],
|
|
1374
|
+
description: item.description,
|
|
1375
|
+
columnId,
|
|
1376
|
+
type,
|
|
1377
|
+
readyForDev: item.readyForDev ?? type === "story",
|
|
1378
|
+
agentId: item.agentId,
|
|
1379
|
+
priority: item.priority,
|
|
1380
|
+
// dependsOn (stacking) and waitsFor (gate) are mutually exclusive — waitsFor wins.
|
|
1381
|
+
dependsOn: waitsFor.length > 0 ? void 0 : dependsOn,
|
|
1382
|
+
waitsFor,
|
|
1383
|
+
subtaskIds: (item.subtaskIds ?? []).map(resolveRef),
|
|
1384
|
+
autoFixAttempts: 0,
|
|
1385
|
+
activeLevel: item.activeLevel ?? highestWorkflowLevel(workflow),
|
|
1386
|
+
modelConfig: item.modelConfig ?? snapshotModelConfig(workflow),
|
|
1387
|
+
baseRef: item.baseRef ?? baseRef,
|
|
1388
|
+
createdAt: now,
|
|
1389
|
+
updatedAt: now,
|
|
1390
|
+
githubIssueUrl: item.githubIssueUrl,
|
|
1391
|
+
workflowId: item.workflowId ?? workflow?.id,
|
|
1392
|
+
descriptionAttachments: item.descriptionAttachments ?? [],
|
|
1393
|
+
branchName: item.branchName,
|
|
1394
|
+
reviewComments: [],
|
|
1395
|
+
activityLog: [],
|
|
1396
|
+
terminalSessions: [],
|
|
1397
|
+
githubCommentIds: []
|
|
1398
|
+
};
|
|
1399
|
+
});
|
|
1400
|
+
const columnCounts = /* @__PURE__ */ new Map();
|
|
1401
|
+
const nextPosition = (columnId) => {
|
|
1402
|
+
if (!columnCounts.has(columnId)) {
|
|
1403
|
+
const row = db.prepare("SELECT COUNT(*) AS n FROM cards WHERE workspace_id = ? AND column_id = ?").get(workspaceId2, columnId);
|
|
1404
|
+
columnCounts.set(columnId, row.n);
|
|
1405
|
+
}
|
|
1406
|
+
const pos = columnCounts.get(columnId);
|
|
1407
|
+
columnCounts.set(columnId, pos + 1);
|
|
1408
|
+
return pos;
|
|
1409
|
+
};
|
|
1410
|
+
const tx = db.transaction(() => {
|
|
1411
|
+
for (const card of cards) {
|
|
1412
|
+
upsertCardRow(db, workspaceId2, { ...card, dependsOn: void 0 }, nextPosition(card.columnId));
|
|
1413
|
+
}
|
|
1414
|
+
const setDep = db.prepare("UPDATE cards SET depends_on_id = ? WHERE id = ?");
|
|
1415
|
+
for (const card of cards) {
|
|
1416
|
+
if (card.dependsOn && db.prepare("SELECT 1 FROM cards WHERE id = ?").get(card.dependsOn)) {
|
|
1417
|
+
setDep.run(card.dependsOn, card.id);
|
|
1418
|
+
} else if (card.dependsOn) {
|
|
1419
|
+
card.dependsOn = void 0;
|
|
1420
|
+
}
|
|
1421
|
+
replaceCardWaitsFor(db, card.id, card.waitsFor ?? []);
|
|
1422
|
+
replaceCardSubtasks(db, card.id, card.subtaskIds ?? []);
|
|
1423
|
+
}
|
|
1424
|
+
bumpBoardRevision(db, workspaceId2);
|
|
1425
|
+
});
|
|
1426
|
+
tx();
|
|
1427
|
+
return cards;
|
|
1428
|
+
}
|
|
1346
1429
|
async function appendActivityLog(workspaceId2, cardId, message) {
|
|
1347
1430
|
const db = getDb();
|
|
1348
1431
|
const tx = db.transaction(() => {
|
|
@@ -1609,7 +1692,6 @@ var ROUTES = {
|
|
|
1609
1692
|
"cards.move": { method: "POST", path: () => "cards/move" },
|
|
1610
1693
|
"cards.delete": { method: "DELETE", path: (i) => `cards/${i.cardId}` },
|
|
1611
1694
|
"cards.addReviewComment": { method: "POST", path: () => "cards/add-review-comment" },
|
|
1612
|
-
"cards.interruptTask": { method: "POST", path: () => "cards/interrupt-task" },
|
|
1613
1695
|
"cards.setPrMeta": { method: "POST", path: () => "cards/set-pr-meta" },
|
|
1614
1696
|
"cards.setPlan": { method: "POST", path: () => "cards/set-plan" },
|
|
1615
1697
|
"workflows.upsert": { method: "POST", path: () => "workflows" },
|
|
@@ -1661,7 +1743,8 @@ var RECURRING_OBSERVER_TOOLS = /* @__PURE__ */ new Set([
|
|
|
1661
1743
|
"kanban_get_system_prompt",
|
|
1662
1744
|
"whipped_search_memory",
|
|
1663
1745
|
"whipped_get_memory",
|
|
1664
|
-
"update_journal"
|
|
1746
|
+
"update_journal",
|
|
1747
|
+
"disable_self"
|
|
1665
1748
|
]);
|
|
1666
1749
|
var baseRegisterTool = server.registerTool;
|
|
1667
1750
|
var registerTool = ((name, ...rest) => {
|
|
@@ -2063,19 +2146,6 @@ registerTool(
|
|
|
2063
2146
|
return { content: [{ type: "text", text: `Deleted card ${cardId}.` }] };
|
|
2064
2147
|
}
|
|
2065
2148
|
);
|
|
2066
|
-
registerTool(
|
|
2067
|
-
"kanban_stop_task",
|
|
2068
|
-
{
|
|
2069
|
-
description: "Stop an in-progress agent task. The session is marked 'stopped' (preserving history) so the card can be restarted later. Use this before moving a child card to todo when its parent was reopened.",
|
|
2070
|
-
inputSchema: {
|
|
2071
|
-
cardId: z2.string().describe("The card ID of the in-progress task to stop")
|
|
2072
|
-
}
|
|
2073
|
-
},
|
|
2074
|
-
async ({ cardId }) => {
|
|
2075
|
-
await apiMutate("cards.interruptTask", { workspaceId, cardId });
|
|
2076
|
-
return { content: [{ type: "text", text: `Task ${cardId} interrupted.` }] };
|
|
2077
|
-
}
|
|
2078
|
-
);
|
|
2079
2149
|
registerTool(
|
|
2080
2150
|
"kanban_get_workflows",
|
|
2081
2151
|
{
|
|
@@ -2322,7 +2392,8 @@ registerTool(
|
|
|
2322
2392
|
}
|
|
2323
2393
|
);
|
|
2324
2394
|
var agentSlot = process.env.WHIPPED_SLOT ?? "";
|
|
2325
|
-
var
|
|
2395
|
+
var hookTaskId = process.env.WHIPPED_HOOK_TASK_ID ?? "";
|
|
2396
|
+
var memoryCardId = hookTaskId.startsWith(ASSISTANT_AGENT_PREFIX) ? "" : hookTaskId;
|
|
2326
2397
|
var memoryModel = process.env.WHIPPED_MODEL ?? "";
|
|
2327
2398
|
registerTool(
|
|
2328
2399
|
"whipped_search_memory",
|
|
@@ -2547,6 +2618,21 @@ if (mcpRole === "recurring" && recurringAgentId) {
|
|
|
2547
2618
|
}
|
|
2548
2619
|
}
|
|
2549
2620
|
);
|
|
2621
|
+
registerTool(
|
|
2622
|
+
"disable_self",
|
|
2623
|
+
{
|
|
2624
|
+
description: "Disable yourself so you stop running on schedule. Use this once your assigned task is complete and there is nothing left to watch for \u2014 e.g. a one-off job that has finished, or a condition you were waiting on that is now resolved. This only pauses future runs; the user can re-enable you later. It does not affect the current run, which finishes normally.",
|
|
2625
|
+
inputSchema: {}
|
|
2626
|
+
},
|
|
2627
|
+
async () => {
|
|
2628
|
+
try {
|
|
2629
|
+
await apiMutate("recurring.update", { id: recurringAgentId, enabled: false });
|
|
2630
|
+
return { content: [{ type: "text", text: "Disabled. No further scheduled runs until re-enabled." }] };
|
|
2631
|
+
} catch (err) {
|
|
2632
|
+
return { content: [{ type: "text", text: `Disable failed: ${err.message}` }] };
|
|
2633
|
+
}
|
|
2634
|
+
}
|
|
2635
|
+
);
|
|
2550
2636
|
}
|
|
2551
2637
|
var transport = new StdioServerTransport();
|
|
2552
2638
|
await server.connect(transport);
|
|
@@ -4251,6 +4251,10 @@
|
|
|
4251
4251
|
height: calc(var(--spacing) * 40);
|
|
4252
4252
|
}
|
|
4253
4253
|
|
|
4254
|
+
.h-44 {
|
|
4255
|
+
height: calc(var(--spacing) * 44);
|
|
4256
|
+
}
|
|
4257
|
+
|
|
4254
4258
|
.h-48 {
|
|
4255
4259
|
height: calc(var(--spacing) * 48);
|
|
4256
4260
|
}
|
|
@@ -4519,6 +4523,10 @@
|
|
|
4519
4523
|
width: 560px;
|
|
4520
4524
|
}
|
|
4521
4525
|
|
|
4526
|
+
.w-\[1100px\] {
|
|
4527
|
+
width: 1100px;
|
|
4528
|
+
}
|
|
4529
|
+
|
|
4522
4530
|
.w-\[1400px\] {
|
|
4523
4531
|
width: 1400px;
|
|
4524
4532
|
}
|
|
@@ -4567,6 +4575,10 @@
|
|
|
4567
4575
|
max-width: 200px;
|
|
4568
4576
|
}
|
|
4569
4577
|
|
|
4578
|
+
.max-w-\[280px\] {
|
|
4579
|
+
max-width: 280px;
|
|
4580
|
+
}
|
|
4581
|
+
|
|
4570
4582
|
.max-w-\[980px\] {
|
|
4571
4583
|
max-width: 980px;
|
|
4572
4584
|
}
|
|
@@ -4639,6 +4651,10 @@
|
|
|
4639
4651
|
flex-shrink: 0;
|
|
4640
4652
|
}
|
|
4641
4653
|
|
|
4654
|
+
.border-collapse {
|
|
4655
|
+
border-collapse: collapse;
|
|
4656
|
+
}
|
|
4657
|
+
|
|
4642
4658
|
.translate-x-0 {
|
|
4643
4659
|
--tw-translate-x: calc(var(--spacing) * 0);
|
|
4644
4660
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
@@ -4888,6 +4904,10 @@
|
|
|
4888
4904
|
overflow: hidden;
|
|
4889
4905
|
}
|
|
4890
4906
|
|
|
4907
|
+
.overflow-auto {
|
|
4908
|
+
overflow: auto;
|
|
4909
|
+
}
|
|
4910
|
+
|
|
4891
4911
|
.overflow-hidden {
|
|
4892
4912
|
overflow: hidden;
|
|
4893
4913
|
}
|
|
@@ -5103,6 +5123,10 @@
|
|
|
5103
5123
|
border-color: oklab(72.2746% -.165574 .0972219 / .25);
|
|
5104
5124
|
}
|
|
5105
5125
|
|
|
5126
|
+
.border-\[\#21212a\] {
|
|
5127
|
+
border-color: #21212a;
|
|
5128
|
+
}
|
|
5129
|
+
|
|
5106
5130
|
.border-\[\#222228\] {
|
|
5107
5131
|
border-color: #222228;
|
|
5108
5132
|
}
|
|
@@ -5239,6 +5263,16 @@
|
|
|
5239
5263
|
}
|
|
5240
5264
|
}
|
|
5241
5265
|
|
|
5266
|
+
.border-red-500\/40 {
|
|
5267
|
+
border-color: #fb2c3666;
|
|
5268
|
+
}
|
|
5269
|
+
|
|
5270
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
5271
|
+
.border-red-500\/40 {
|
|
5272
|
+
border-color: color-mix(in oklab, var(--color-red-500) 40%, transparent);
|
|
5273
|
+
}
|
|
5274
|
+
}
|
|
5275
|
+
|
|
5242
5276
|
.border-slate-400\/25 {
|
|
5243
5277
|
border-color: #90a1b940;
|
|
5244
5278
|
}
|
|
@@ -5289,6 +5323,10 @@
|
|
|
5289
5323
|
background-color: #0d1a2d;
|
|
5290
5324
|
}
|
|
5291
5325
|
|
|
5326
|
+
.bg-\[\#0e0e12\] {
|
|
5327
|
+
background-color: #0e0e12;
|
|
5328
|
+
}
|
|
5329
|
+
|
|
5292
5330
|
.bg-\[\#0f0f10\] {
|
|
5293
5331
|
background-color: #0f0f10;
|
|
5294
5332
|
}
|
|
@@ -5469,6 +5507,10 @@
|
|
|
5469
5507
|
background-color: #16160a;
|
|
5470
5508
|
}
|
|
5471
5509
|
|
|
5510
|
+
.bg-\[\#16161c\] {
|
|
5511
|
+
background-color: #16161c;
|
|
5512
|
+
}
|
|
5513
|
+
|
|
5472
5514
|
.bg-\[\#111115\] {
|
|
5473
5515
|
background-color: #111115;
|
|
5474
5516
|
}
|
|
@@ -5763,6 +5805,16 @@
|
|
|
5763
5805
|
background-color: var(--color-red-500);
|
|
5764
5806
|
}
|
|
5765
5807
|
|
|
5808
|
+
.bg-red-500\/5 {
|
|
5809
|
+
background-color: #fb2c360d;
|
|
5810
|
+
}
|
|
5811
|
+
|
|
5812
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
5813
|
+
.bg-red-500\/5 {
|
|
5814
|
+
background-color: color-mix(in oklab, var(--color-red-500) 5%, transparent);
|
|
5815
|
+
}
|
|
5816
|
+
}
|
|
5817
|
+
|
|
5766
5818
|
.bg-red-500\/10 {
|
|
5767
5819
|
background-color: #fb2c361a;
|
|
5768
5820
|
}
|
|
@@ -6167,6 +6219,10 @@
|
|
|
6167
6219
|
text-align: right;
|
|
6168
6220
|
}
|
|
6169
6221
|
|
|
6222
|
+
.align-top {
|
|
6223
|
+
vertical-align: top;
|
|
6224
|
+
}
|
|
6225
|
+
|
|
6170
6226
|
.font-mono {
|
|
6171
6227
|
font-family: var(--font-mono);
|
|
6172
6228
|
}
|
|
@@ -6456,6 +6512,14 @@
|
|
|
6456
6512
|
color: #c8b866;
|
|
6457
6513
|
}
|
|
6458
6514
|
|
|
6515
|
+
.text-\[\#c8c8d4\] {
|
|
6516
|
+
color: #c8c8d4;
|
|
6517
|
+
}
|
|
6518
|
+
|
|
6519
|
+
.text-\[\#e0e0ea\] {
|
|
6520
|
+
color: #e0e0ea;
|
|
6521
|
+
}
|
|
6522
|
+
|
|
6459
6523
|
.text-\[\#eab308\] {
|
|
6460
6524
|
color: #eab308;
|
|
6461
6525
|
}
|
|
@@ -6612,6 +6676,16 @@
|
|
|
6612
6676
|
color: var(--color-purple-400);
|
|
6613
6677
|
}
|
|
6614
6678
|
|
|
6679
|
+
.text-purple-400\/70 {
|
|
6680
|
+
color: #c07effb3;
|
|
6681
|
+
}
|
|
6682
|
+
|
|
6683
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
6684
|
+
.text-purple-400\/70 {
|
|
6685
|
+
color: color-mix(in oklab, var(--color-purple-400) 70%, transparent);
|
|
6686
|
+
}
|
|
6687
|
+
}
|
|
6688
|
+
|
|
6615
6689
|
.text-red-300\/90 {
|
|
6616
6690
|
color: #ffa3a3e6;
|
|
6617
6691
|
}
|
|
@@ -6709,6 +6783,10 @@
|
|
|
6709
6783
|
text-decoration-line: underline;
|
|
6710
6784
|
}
|
|
6711
6785
|
|
|
6786
|
+
.underline-offset-2 {
|
|
6787
|
+
text-underline-offset: 2px;
|
|
6788
|
+
}
|
|
6789
|
+
|
|
6712
6790
|
.placeholder-\[\#2a2a35\]::placeholder {
|
|
6713
6791
|
color: #2a2a35;
|
|
6714
6792
|
}
|
|
@@ -6884,6 +6962,10 @@
|
|
|
6884
6962
|
color: #3a3a45;
|
|
6885
6963
|
}
|
|
6886
6964
|
|
|
6965
|
+
.placeholder\:text-\[\#3a3a48\]::placeholder {
|
|
6966
|
+
color: #3a3a48;
|
|
6967
|
+
}
|
|
6968
|
+
|
|
6887
6969
|
.placeholder\:text-\[\#4a4a5a\]::placeholder {
|
|
6888
6970
|
color: #4a4a5a;
|
|
6889
6971
|
}
|
|
@@ -6892,6 +6974,11 @@
|
|
|
6892
6974
|
margin-bottom: calc(var(--spacing) * 0);
|
|
6893
6975
|
}
|
|
6894
6976
|
|
|
6977
|
+
.last\:border-0:last-child {
|
|
6978
|
+
border-style: var(--tw-border-style);
|
|
6979
|
+
border-width: 0;
|
|
6980
|
+
}
|
|
6981
|
+
|
|
6895
6982
|
.focus-within\:border-\[\#3a3a50\]:focus-within {
|
|
6896
6983
|
border-color: #3a3a50;
|
|
6897
6984
|
}
|
|
@@ -6935,6 +7022,10 @@
|
|
|
6935
7022
|
background-color: #1a1a1f;
|
|
6936
7023
|
}
|
|
6937
7024
|
|
|
7025
|
+
.hover\:bg-\[\#1a1a22\]:hover {
|
|
7026
|
+
background-color: #1a1a22;
|
|
7027
|
+
}
|
|
7028
|
+
|
|
6938
7029
|
.hover\:bg-\[\#1a1a24\]:hover {
|
|
6939
7030
|
background-color: #1a1a24;
|
|
6940
7031
|
}
|
|
@@ -7065,6 +7156,10 @@
|
|
|
7065
7156
|
color: #c8b866;
|
|
7066
7157
|
}
|
|
7067
7158
|
|
|
7159
|
+
.hover\:text-\[\#e0d080\]:hover {
|
|
7160
|
+
color: #e0d080;
|
|
7161
|
+
}
|
|
7162
|
+
|
|
7068
7163
|
.hover\:text-\[\#ef4444\]:hover {
|
|
7069
7164
|
color: #ef4444;
|
|
7070
7165
|
}
|