devloom 1.0.0 → 1.2.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/.ai/core.dsl +44 -0
- package/.ai/skills.dsl +39 -0
- package/.ai/verify.dsl +97 -0
- package/.ai/workflow.dsl +81 -0
- package/.opencode/themes/devloom-night-owl.json +103 -0
- package/GUIDE.md +572 -115
- package/README.md +583 -109
- package/SECURITY.md +93 -0
- package/agents/devloom-developer-flash.md +31 -0
- package/agents/devloom-developer-senior.md +32 -0
- package/agents/devloom-developer.md +21 -55
- package/agents/devloom-documenter-flash.md +28 -0
- package/agents/devloom-documenter.md +17 -56
- package/agents/devloom-orchestrator.md +236 -356
- package/agents/devloom-planner-flash.md +34 -0
- package/agents/devloom-planner-senior.md +35 -0
- package/agents/devloom-planner.md +36 -0
- package/agents/devloom-qa-flash.md +32 -0
- package/agents/devloom-qa.md +21 -83
- package/agents/devloom-security-senior.md +35 -0
- package/agents/devloom-security.md +34 -0
- package/agents/devloom-verifier.md +33 -0
- package/agents/devloom-vision.md +113 -0
- package/agents/devloom-visual-critic.md +102 -0
- package/agents/devloom-visual-director.md +84 -0
- package/commands/devloom-agents.md +49 -0
- package/commands/devloom-auto.md +11 -0
- package/commands/devloom-context.md +82 -0
- package/commands/devloom-deepseek-mimo.md +11 -0
- package/commands/devloom-deepseek.md +11 -0
- package/commands/devloom-free.md +11 -0
- package/commands/devloom-go-economy.md +11 -0
- package/commands/devloom-go-flash.md +11 -0
- package/commands/devloom-go.md +11 -0
- package/commands/devloom-init.md +28 -50
- package/commands/devloom-loop-status.md +25 -0
- package/commands/devloom-loop.md +36 -0
- package/commands/devloom-mimo.md +11 -0
- package/commands/devloom-plan.md +13 -0
- package/commands/devloom-refresh.md +22 -0
- package/commands/devloom-resume.md +30 -49
- package/commands/devloom-save.md +69 -0
- package/commands/devloom-status.md +9 -18
- package/commands/devloom.md +99 -67
- package/dist/agents.d.ts +30 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +139 -0
- package/dist/agents.js.map +1 -0
- package/dist/bootstrap.d.ts +56 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +116 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/constraints.d.ts +5 -0
- package/dist/constraints.d.ts.map +1 -0
- package/dist/constraints.js +45 -0
- package/dist/constraints.js.map +1 -0
- package/dist/context.d.ts +42 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +636 -0
- package/dist/context.js.map +1 -0
- package/dist/guard.d.ts +19 -0
- package/dist/guard.d.ts.map +1 -0
- package/dist/guard.js +418 -0
- package/dist/guard.js.map +1 -0
- package/dist/loop.d.ts +64 -0
- package/dist/loop.d.ts.map +1 -0
- package/dist/loop.js +164 -0
- package/dist/loop.js.map +1 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +101 -1
- package/dist/plugin.js.map +1 -1
- package/dist/tui-agents.d.ts +61 -0
- package/dist/tui-agents.d.ts.map +1 -0
- package/dist/tui-agents.js +89 -0
- package/dist/tui-agents.js.map +1 -0
- package/dist/tui.d.ts +6 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +92 -0
- package/dist/tui.js.map +1 -0
- package/dist/worktree.d.ts +46 -0
- package/dist/worktree.d.ts.map +1 -0
- package/dist/worktree.js +272 -0
- package/dist/worktree.js.map +1 -0
- package/package.json +46 -6
- package/patterns/changelog-drafter.md +38 -0
- package/patterns/ci-sweeper.md +40 -0
- package/patterns/daily-triage.md +37 -0
- package/patterns/dependency-sweeper.md +40 -0
- package/patterns/design-audit.md +63 -0
- package/patterns/issue-triage.md +37 -0
- package/patterns/post-merge-cleanup.md +34 -0
- package/patterns/pr-babysitter.md +37 -0
- package/patterns/registry.yaml +52 -0
- package/postinstall.mjs +264 -64
- package/project/README.md +29 -0
- package/protocol/agent-contracts.md +27 -0
- package/protocol/artifact-system.md +53 -0
- package/protocol/model-routing.md +194 -0
- package/protocol/orchestrator-core.md +43 -0
- package/protocol/project-system.md +45 -0
- package/protocol/rules.md +18 -0
- package/protocol/verification-policy.md +48 -0
- package/scripts/briefing.mjs +192 -0
- package/scripts/loop-run.mjs +205 -0
- package/scripts/model-capabilities.mjs +194 -0
- package/scripts/plugin-cache.mjs +269 -0
- package/scripts/profile.mjs +755 -0
- package/scripts/visual-benchmark.mjs +149 -0
- package/scripts/worktree.mjs +445 -0
- package/skills/build/development.md +33 -0
- package/skills/build/live-docs.md +38 -0
- package/skills/build/simplify.md +50 -0
- package/skills/build/vision-analysis.md +98 -0
- package/skills/design/app-design.md +31 -0
- package/skills/design/design-grounding.md +30 -0
- package/skills/design/design-system.md +27 -0
- package/skills/design/game-design.md +35 -0
- package/skills/design/motion-design.md +34 -0
- package/skills/design/visual-direction.md +32 -0
- package/skills/design/web-design.md +33 -0
- package/skills/loop/changelog-drafter.md +32 -0
- package/skills/loop/ci-sweeper.md +24 -0
- package/skills/loop/constraints.md +21 -0
- package/skills/loop/dependency-sweeper.md +24 -0
- package/skills/loop/design-audit.md +67 -0
- package/skills/loop/issue-triage.md +27 -0
- package/skills/loop/post-merge-cleanup.md +24 -0
- package/skills/loop/pr-babysitter.md +26 -0
- package/skills/loop/triage.md +25 -0
- package/skills/loop/verifier.md +20 -0
- package/skills/meta/skill-discovery.md +23 -0
- package/skills/plan/planning.md +27 -0
- package/skills/plan/verification-planning.md +40 -0
- package/skills/review/security-review.md +63 -0
- package/skills/ship/documentation.md +11 -0
- package/skills/verify/app-verification.md +19 -0
- package/skills/verify/quality-assurance.md +17 -0
- package/skills/verify/visual-critique.md +30 -0
- package/skills/verify/visual-quality-gate.md +29 -0
- package/skills/verify/visual-regression.md +25 -0
- package/agents/devloom-analyst.md +0 -83
- package/agents/devloom-architect.md +0 -88
package/.ai/core.dsl
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
VER:1
|
|
2
|
+
LANG:EN
|
|
3
|
+
STYLE: Deterministic|LowToken|GitDiffable|HumanMaintainable
|
|
4
|
+
FMT:
|
|
5
|
+
- MD=human or mixed docs
|
|
6
|
+
- JSONM=minified JSON for AI-only state
|
|
7
|
+
TERMS: AC|ADR|A11y|API|Arch|BE|CleanArch|Ctx|Docs|E2E|FE|NFR|QA|RCA|Regr|ResponsiveUI|TDD|US
|
|
8
|
+
STATE:
|
|
9
|
+
- CFG=.opencode/devloom/project/config.json
|
|
10
|
+
- BOARD=.opencode/devloom/project/board.json
|
|
11
|
+
- PSTATE=.opencode/devloom/project/state.json
|
|
12
|
+
- REQ=.opencode/devloom/requirements.md
|
|
13
|
+
- PLAN=.opencode/devloom/plan.md
|
|
14
|
+
- DEF=.opencode/devloom/defects.json
|
|
15
|
+
PRINCIPLES:
|
|
16
|
+
- SOLID|CleanCode|CleanArch|DRY|KISS|YAGNI
|
|
17
|
+
- TDD: test-first for logic, failing-repro-first for bugs
|
|
18
|
+
- LayeredArch: domain<-app<-infra<-ui|DependencyInversion|no domain->framework coupling
|
|
19
|
+
- SmallFns|IntentionRevealingNames|NoDeadCode|HandleErrors|GuardEdges
|
|
20
|
+
- UX: Accessible(WCAG-AA)|Consistent|Responsive|ClearFeedback|ErrorRecovery
|
|
21
|
+
- Surgical: change only what the task requires, smallest correct diff
|
|
22
|
+
- Forensic: evidence-based, trace before acting, prove cause, verify after
|
|
23
|
+
- CorrectSolution: root-cause fix using the right/idiomatic approach; NO workarounds/hacks/suppression
|
|
24
|
+
- Precise: confirm assumptions against code/docs, never guess
|
|
25
|
+
RULES:
|
|
26
|
+
- EnglishOnly
|
|
27
|
+
- ApplyPrinciples
|
|
28
|
+
- SingleActive
|
|
29
|
+
- PersistAll
|
|
30
|
+
- NoDropPending
|
|
31
|
+
- LoadMemoryEveryPrompt
|
|
32
|
+
- UseRelevantSkillsEveryPrompt
|
|
33
|
+
- OfficialDocsFirst
|
|
34
|
+
- LatestStableCheck for stack-specific work
|
|
35
|
+
- TDDReq for code change
|
|
36
|
+
- RegrReq for code change
|
|
37
|
+
- NoScopeCreep
|
|
38
|
+
- SecureByDefault
|
|
39
|
+
- DeltaCommOnly
|
|
40
|
+
- AppendPromptAsLastTask
|
|
41
|
+
- AutoMaintainTicketsTodosPlan
|
|
42
|
+
- DelegateByDefault
|
|
43
|
+
- ShortStableKeys in JSONM
|
|
44
|
+
JSON_KEYS: v|id|type|title|status|ac|deps|files|tests|cols|ts|ctx|next
|
package/.ai/skills.dsl
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
LOAD_ORDER:
|
|
2
|
+
- detect domain
|
|
3
|
+
- load matching skills
|
|
4
|
+
- always apply core flow
|
|
5
|
+
MAP:
|
|
6
|
+
- REQ|PLAN|FE|BE|API arch=planning
|
|
7
|
+
- FE|BE|API impl|BUG|FIX|RCA=development
|
|
8
|
+
- TEST|PERF|REVIEW|REGR=quality-assurance
|
|
9
|
+
- EXP|ROUTE|FORM|DOM|A11Y|APIV|CONTRACT|JOURNEY|STATE|VISUAL|RESPONSIVE|MOTION=app-verification
|
|
10
|
+
- SEC=security-review
|
|
11
|
+
- DOC=documentation
|
|
12
|
+
- DESIGN|VISUALDIR|DESIGNFILE=visual-direction
|
|
13
|
+
- DESIGNGROUND|TOKENS|STYLEGUIDE=design-grounding
|
|
14
|
+
- WEBUI|LANDING|WEBSITE=web-design
|
|
15
|
+
- APPUI|MOBILEUI=app-design
|
|
16
|
+
- GAMEUI|HUD|GAMESCREEN=game-design
|
|
17
|
+
- ANIMATION|TRANSITION|MICROINTERACTION=motion-design
|
|
18
|
+
- DESIGNSYSTEM|COMPONENTLIBRARY=design-system
|
|
19
|
+
- VISUALCRITIQUE|VISUALSCORE|VISUALGATE=visual-critique
|
|
20
|
+
- VISUALQUALITY|UIQUALITYBAR=visual-quality-gate
|
|
21
|
+
- VISUALREGRESSION|SHOTDIFF=visual-regression
|
|
22
|
+
MATCH:
|
|
23
|
+
- ui|react|vue|angular|css|html|component|layout=>FE
|
|
24
|
+
- design|design brief|design file|visual direction|redesign|mockup fidelity|design contract=>DESIGN
|
|
25
|
+
- web page|landing|website|responsive layout=>WEBUI|DESIGN
|
|
26
|
+
- app screen|mobile ui|dashboard ui=>APPUI|DESIGN
|
|
27
|
+
- game hud|game ui|game screen=>GAMEUI|DESIGN
|
|
28
|
+
- animation|transition|micro-interaction|motion|hover effect=>MOTION|DESIGN
|
|
29
|
+
- design system|tokens|style guide|component library|spacing scale=>DESIGNSYSTEM
|
|
30
|
+
- visual critique|visual score|visual pass|visual fail|screenshot review|looks off|ugly=>VISUALCRITIQUE
|
|
31
|
+
- visual quality|quality bar|polish|visual regression|shot diff=>VISUALQUALITY|VISUALREGRESSION
|
|
32
|
+
- api|endpoint|service|route|graphql|rest=>BE|API
|
|
33
|
+
- crud|dto|schema|serializer|mapper|expose|exposure|payload|input|output|internal component|internal module=>SEC
|
|
34
|
+
- test|spec|jest|vitest|pytest|e2e=>TEST
|
|
35
|
+
- auth|secret|cors|xss|csrf|owasp=>SEC
|
|
36
|
+
- perf|slow|cache|bundle|lcp=>PERF
|
|
37
|
+
- bug|error|fail|crash|broken=>BUG
|
|
38
|
+
- readme|docs|adr|comment=>DOC
|
|
39
|
+
REPORT: ActivatedSkills=<list>
|
package/.ai/verify.dsl
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
UX_BAR: Accessible(WCAG-AA)|Consistent|Responsive|ClearFeedback|ErrorRecovery|NoLayoutShift
|
|
2
|
+
EXPLORE:
|
|
3
|
+
- visit all reachable routes
|
|
4
|
+
- enumerate buttons|links|forms|modals|tables|tabs
|
|
5
|
+
- continue until no new surface
|
|
6
|
+
- OUT: exploration-report.json
|
|
7
|
+
DOM:
|
|
8
|
+
- size>0
|
|
9
|
+
- visible
|
|
10
|
+
- inViewport
|
|
11
|
+
- notBlocked
|
|
12
|
+
- computedStyleSane
|
|
13
|
+
ROUTE:
|
|
14
|
+
- render
|
|
15
|
+
- noBlank
|
|
16
|
+
- noCrash
|
|
17
|
+
- noConsoleErr
|
|
18
|
+
- noNavFail
|
|
19
|
+
- noHydrationErr
|
|
20
|
+
- domVisible
|
|
21
|
+
- noBlockedClick
|
|
22
|
+
FORM:
|
|
23
|
+
- valid
|
|
24
|
+
- invalid
|
|
25
|
+
- required
|
|
26
|
+
- boundary
|
|
27
|
+
- loading
|
|
28
|
+
- successMsg
|
|
29
|
+
- errorMsg
|
|
30
|
+
A11Y:
|
|
31
|
+
- role
|
|
32
|
+
- label
|
|
33
|
+
- focus
|
|
34
|
+
- kbNav
|
|
35
|
+
- escClose
|
|
36
|
+
- contrast
|
|
37
|
+
- semanticHtml
|
|
38
|
+
API:
|
|
39
|
+
- auth
|
|
40
|
+
- authz
|
|
41
|
+
- inputVal
|
|
42
|
+
- outputSchema
|
|
43
|
+
- statusCodes
|
|
44
|
+
- errorShape
|
|
45
|
+
- paging/filter/sort if applicable
|
|
46
|
+
CONTRACT:
|
|
47
|
+
- generate/open OpenAPI when needed
|
|
48
|
+
- compare runtime fields/types/status to contract
|
|
49
|
+
STATE:
|
|
50
|
+
- enumerate valid states
|
|
51
|
+
- verify transitions + recovery paths
|
|
52
|
+
JOURNEY:
|
|
53
|
+
- derive from REQ+routes+ui
|
|
54
|
+
- CRUD
|
|
55
|
+
- LoginFlow
|
|
56
|
+
- SearchFilterSort
|
|
57
|
+
- ErrorRecovery
|
|
58
|
+
SEC:
|
|
59
|
+
- depAudit
|
|
60
|
+
- noSecrets
|
|
61
|
+
- cors
|
|
62
|
+
- sanitize
|
|
63
|
+
- auth
|
|
64
|
+
- authz
|
|
65
|
+
- inputVal
|
|
66
|
+
- outputSchema
|
|
67
|
+
- leastPrivilege
|
|
68
|
+
- noInternalFieldLeak
|
|
69
|
+
- massAssignment
|
|
70
|
+
- overposting
|
|
71
|
+
- xss
|
|
72
|
+
- csrf
|
|
73
|
+
- idor
|
|
74
|
+
PERF:
|
|
75
|
+
- loadTime
|
|
76
|
+
- noLeak
|
|
77
|
+
- noExcessRender
|
|
78
|
+
- bundleOk
|
|
79
|
+
VISUAL:
|
|
80
|
+
- screenshots available? if no: VISUAL_CRITIQUE_LIMITED (never fake VISUAL_PASS)
|
|
81
|
+
- score vs design.md contract (10 dims: hierarchy, spacing, typography, color, alignment, consistency, affordance, density, polish, fidelity)
|
|
82
|
+
- no layout overflow|no clipped text|no overlapping elements
|
|
83
|
+
- component states match design tokens
|
|
84
|
+
- accept critic verdict passed by orchestrator (CRITIC_VERDICT)
|
|
85
|
+
- OUT: VISUAL_PASS|VISUAL_FAIL with scores
|
|
86
|
+
RESPONSIVE:
|
|
87
|
+
- 360|768|1280 viewports
|
|
88
|
+
- no horizontal scroll
|
|
89
|
+
- no overlap|no truncation of critical content
|
|
90
|
+
- touch targets >=44px on small viewport
|
|
91
|
+
- images/svg scale correctly
|
|
92
|
+
MOTION:
|
|
93
|
+
- respects prefers-reduced-motion
|
|
94
|
+
- durations within budget (<=300ms standard|<=500ms complex)
|
|
95
|
+
- no layout shift during animation
|
|
96
|
+
- entrance/exit states complete (no stuck opacity/transform)
|
|
97
|
+
- easing consistent with design.md
|
package/.ai/workflow.dsl
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
FLOW: Triage>MinimalChain>Verify>Regr>Done
|
|
2
|
+
TRIAGE: classify intent first|run only matching chain+conditions|never full pipeline by default
|
|
3
|
+
CHAINS:
|
|
4
|
+
- feature=planner>developer>qa>documenter
|
|
5
|
+
- bug=developer(rootCause+fix)>qa(regr)
|
|
6
|
+
- refactor=planner(plan)>developer>qa
|
|
7
|
+
- small(<=2files,noNewBehavior)=developer>qa
|
|
8
|
+
- docsOnly=planner(validate)>documenter
|
|
9
|
+
- specOnly=planner(REQ)
|
|
10
|
+
- planOnly=planner(PLAN)
|
|
11
|
+
- explore=verifier(scope=explore)
|
|
12
|
+
- verifyOnly=qa+verifier(applicableScopes)
|
|
13
|
+
COND_ADDONS:
|
|
14
|
+
- UI=>verifier(scope=route,form,a11y)
|
|
15
|
+
- UI=>visual-director(DESIGN_FILE)>persist .opencode/devloom/context/design.md>developer>visual-critic(loop<=3)
|
|
16
|
+
- visualRequired=>criticVerdict recorded before DONE|VISUAL_CRITIQUE_LIMITED only if no screenshots available
|
|
17
|
+
- backendOnly(API|infra|docs)=>never route visual agents|never set VISUAL_REQUIRED
|
|
18
|
+
- API=>verifier(scope=api,contract)
|
|
19
|
+
- CRUD|exposure=>security(mandatory)
|
|
20
|
+
- userFlow=>verifier(scope=journey,state)
|
|
21
|
+
DEPS:
|
|
22
|
+
- developer requires plan for non-trivial work
|
|
23
|
+
- documenter only after verified impl
|
|
24
|
+
- qa regression always after a defect fix
|
|
25
|
+
ANTILOOP:
|
|
26
|
+
- no orchestrator self-delegation
|
|
27
|
+
- no subagent calls orchestrator
|
|
28
|
+
- every orchestrator turn: task()|DEVLOOM_DONE|BLOCKED+reason
|
|
29
|
+
- same agent+same input max2 then mark blocked + BLOCKED report (orchestrator handles recovery inline)
|
|
30
|
+
SUBAGENTS:
|
|
31
|
+
- Plan=devloom-planner
|
|
32
|
+
- Impl/Fix=devloom-developer
|
|
33
|
+
- Verify/Review/Regr=devloom-qa
|
|
34
|
+
- AppVerify=devloom-verifier(scope=explore|route|dom|form|a11y|api|contract|journey|state|visual|responsive|motion)
|
|
35
|
+
- Security=devloom-security
|
|
36
|
+
- Docs=devloom-documenter
|
|
37
|
+
- ImageAnalysis=devloom-vision
|
|
38
|
+
- DesignBrief=devloom-visual-director(emits DESIGN_FILE|read-only)
|
|
39
|
+
- VisualCritique=devloom-visual-critic(VISUAL_SCORE+TOP_3_PROBLEMS+DO_NOT_CHANGE+VISUAL_DELTA|read-only|max 3 cycles)
|
|
40
|
+
QUEUE:
|
|
41
|
+
- load CFG|BOARD|PSTATE on every prompt
|
|
42
|
+
- load memory and relevant skills on every prompt before planning new work
|
|
43
|
+
- append the current user prompt as the last task/todo before routing execution
|
|
44
|
+
- create or update tickets, todos, and plan entries automatically for every prompt
|
|
45
|
+
- if pending work exists: continue it first
|
|
46
|
+
- if user reprioritizes: persist old active, then switch
|
|
47
|
+
- doing<=1 unless explicit override
|
|
48
|
+
PHASES:
|
|
49
|
+
- Analysis=req+constraints+openqs
|
|
50
|
+
- Docs=source check+plan+ticket map+ADR/doc deltas
|
|
51
|
+
- Impl=one ticket only|min change|tests
|
|
52
|
+
- Verify=lint+unit+integration+e2e as applicable
|
|
53
|
+
- Regr=targeted impacted checks + full gate before done
|
|
54
|
+
- Done=all AC pass|gates pass|no open high defect
|
|
55
|
+
GATES:
|
|
56
|
+
- build
|
|
57
|
+
- lint
|
|
58
|
+
- unit
|
|
59
|
+
- integration
|
|
60
|
+
- e2e
|
|
61
|
+
- routes
|
|
62
|
+
- buttons
|
|
63
|
+
- forms
|
|
64
|
+
- links
|
|
65
|
+
- journeys
|
|
66
|
+
- api
|
|
67
|
+
- a11y
|
|
68
|
+
- responsive
|
|
69
|
+
- visual
|
|
70
|
+
- perf
|
|
71
|
+
- security
|
|
72
|
+
- noOpenDefects
|
|
73
|
+
FAIL_PATH: defect>developer(rootCauseFix)>qa(regr)|max3cycles>mark blocked+escalate
|
|
74
|
+
DELEGATION:
|
|
75
|
+
- use the mapped DevLoom subagent for each phase whenever one exists
|
|
76
|
+
- do not perform specialist phase work directly in the orchestrator when a mapped subagent is available
|
|
77
|
+
- run devloom-security whenever work adds/changes CRUD endpoints or exposes internal component/module data through inputs or outputs
|
|
78
|
+
- orchestrator may summarize, route, persist state, and decide next action, but implementation and verification work must be delegated
|
|
79
|
+
- orchestrator must keep task/todo/plan state current before and after each delegated phase
|
|
80
|
+
- orchestrator must save state at every phase boundary, before reprioritization, and before pause/finish
|
|
81
|
+
- if delegation fails or a subagent is unavailable, log the failure, retry once with a corrected prompt, then mark blocked and report BLOCKED
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opencode.ai/theme.json",
|
|
3
|
+
"name": "DevLoom Night Owl",
|
|
4
|
+
"author": "DevLoom",
|
|
5
|
+
"defs": {
|
|
6
|
+
"owlBg": "#011627",
|
|
7
|
+
"owlBgPanel": "#0a1f2e",
|
|
8
|
+
"owlBgElement": "#0f2a3d",
|
|
9
|
+
"owlBgHover": "#15344a",
|
|
10
|
+
"owlBgSelection": "#1d3b52",
|
|
11
|
+
"owlFg": "#d6deeb",
|
|
12
|
+
"owlFgMuted": "#607e99",
|
|
13
|
+
"owlFgDim": "#3a6075",
|
|
14
|
+
"owlBorder": "#1b3b4f",
|
|
15
|
+
"owlBorderActive": "#7fdbca",
|
|
16
|
+
"owlCyan": "#7fdbca",
|
|
17
|
+
"owlTeal": "#5f7e97",
|
|
18
|
+
"owlOrange": "#f78c6c",
|
|
19
|
+
"owlYellow": "#ecc48d",
|
|
20
|
+
"owlGreen": "#addb67",
|
|
21
|
+
"owlRed": "#ff5874",
|
|
22
|
+
"owlPurple": "#c792ea",
|
|
23
|
+
"owlBlue": "#82aaff",
|
|
24
|
+
"owlPink": "#f07178",
|
|
25
|
+
"owlDiffAdd": "#1a3a2a",
|
|
26
|
+
"owlDiffRemove": "#3a1520",
|
|
27
|
+
"owlHighlightAdd": "#2d5a3d",
|
|
28
|
+
"owlHighlightRemove": "#5a2030"
|
|
29
|
+
},
|
|
30
|
+
"theme": {
|
|
31
|
+
"primary": { "dark": "owlCyan", "light": "owlTeal" },
|
|
32
|
+
"secondary": { "dark": "owlTeal", "light": "owlBlue" },
|
|
33
|
+
"accent": { "dark": "owlPurple", "light": "owlPink" },
|
|
34
|
+
"error": { "dark": "owlRed", "light": "owlRed" },
|
|
35
|
+
"warning": { "dark": "owlOrange", "light": "owlOrange" },
|
|
36
|
+
"success": { "dark": "owlGreen", "light": "owlGreen" },
|
|
37
|
+
"info": { "dark": "owlBlue", "light": "owlBlue" },
|
|
38
|
+
"text": { "dark": "owlFg", "light": "owlBg" },
|
|
39
|
+
"textMuted": { "dark": "owlFgMuted", "light": "owlFgMuted" },
|
|
40
|
+
"background": { "dark": "owlBg", "light": "#f0f4f8" },
|
|
41
|
+
"backgroundPanel": { "dark": "owlBgPanel", "light": "#e2e8f0" },
|
|
42
|
+
"backgroundElement": { "dark": "owlBgElement", "light": "#cbd5e1" },
|
|
43
|
+
"backgroundHover": { "dark": "owlBgHover", "light": "#b0c4de" },
|
|
44
|
+
"backgroundSelection": { "dark": "owlBgSelection", "light": "#94a3b8" },
|
|
45
|
+
"border": { "dark": "owlBorder", "light": "#94a3b8" },
|
|
46
|
+
"borderActive": { "dark": "owlBorderActive", "light": "owlCyan" },
|
|
47
|
+
"borderSubtle": { "dark": "owlBgSelection", "light": "#cbd5e1" },
|
|
48
|
+
"diffAdded": { "dark": "owlGreen", "light": "owlGreen" },
|
|
49
|
+
"diffRemoved": { "dark": "owlRed", "light": "owlRed" },
|
|
50
|
+
"diffContext": { "dark": "owlFgMuted", "light": "owlFgMuted" },
|
|
51
|
+
"diffHunkHeader": { "dark": "owlTeal", "light": "owlTeal" },
|
|
52
|
+
"diffHighlightAdded": { "dark": "owlGreen", "light": "owlGreen" },
|
|
53
|
+
"diffHighlightRemoved": { "dark": "owlRed", "light": "owlRed" },
|
|
54
|
+
"diffAddedBg": { "dark": "owlDiffAdd", "light": "#dcfce7" },
|
|
55
|
+
"diffRemovedBg": { "dark": "owlDiffRemove", "light": "#fee2e2" },
|
|
56
|
+
"diffContextBg": { "dark": "owlBgPanel", "light": "#f1f5f9" },
|
|
57
|
+
"diffLineNumber": { "dark": "owlFgDim", "light": "#94a3b8" },
|
|
58
|
+
"diffAddedLineNumberBg": { "dark": "owlDiffAdd", "light": "#dcfce7" },
|
|
59
|
+
"diffRemovedLineNumberBg": { "dark": "owlDiffRemove", "light": "#fee2e2" },
|
|
60
|
+
"markdownText": { "dark": "owlFg", "light": "#1e293b" },
|
|
61
|
+
"markdownHeading": { "dark": "owlCyan", "light": "owlTeal" },
|
|
62
|
+
"markdownLink": { "dark": "owlBlue", "light": "owlBlue" },
|
|
63
|
+
"markdownLinkText": { "dark": "owlCyan", "light": "owlCyan" },
|
|
64
|
+
"markdownCode": { "dark": "owlGreen", "light": "owlGreen" },
|
|
65
|
+
"markdownBlockQuote": { "dark": "owlFgDim", "light": "#94a3b8" },
|
|
66
|
+
"markdownEmph": { "dark": "owlOrange", "light": "owlOrange" },
|
|
67
|
+
"markdownStrong": { "dark": "owlYellow", "light": "owlYellow" },
|
|
68
|
+
"markdownHorizontalRule": { "dark": "owlBorder", "light": "#94a3b8" },
|
|
69
|
+
"markdownListItem": { "dark": "owlCyan", "light": "owlTeal" },
|
|
70
|
+
"markdownListEnumeration": { "dark": "owlOrange", "light": "owlOrange" },
|
|
71
|
+
"markdownImage": { "dark": "owlPurple", "light": "owlPurple" },
|
|
72
|
+
"markdownImageText": { "dark": "owlPink", "light": "owlPink" },
|
|
73
|
+
"markdownCodeBlock": { "dark": "owlFg", "light": "owlBg" },
|
|
74
|
+
"syntaxComment": { "dark": "owlFgDim", "light": "#94a3b8" },
|
|
75
|
+
"syntaxKeyword": { "dark": "owlPurple", "light": "owlPurple" },
|
|
76
|
+
"syntaxFunction": { "dark": "owlCyan", "light": "owlTeal" },
|
|
77
|
+
"syntaxVariable": { "dark": "owlOrange", "light": "owlOrange" },
|
|
78
|
+
"syntaxString": { "dark": "owlGreen", "light": "owlGreen" },
|
|
79
|
+
"syntaxNumber": { "dark": "owlYellow", "light": "owlYellow" },
|
|
80
|
+
"syntaxType": { "dark": "owlBlue", "light": "owlBlue" },
|
|
81
|
+
"syntaxOperator": { "dark": "owlPink", "light": "owlPink" },
|
|
82
|
+
"syntaxPunctuation": { "dark": "owlFg", "light": "#1e293b" },
|
|
83
|
+
"syntaxConstant": { "dark": "owlPurple", "light": "owlPurple" },
|
|
84
|
+
"syntaxBuiltin": { "dark": "owlCyan", "light": "owlTeal" },
|
|
85
|
+
"syntaxProperty": { "dark": "owlBlue", "light": "owlBlue" },
|
|
86
|
+
"syntaxMethod": { "dark": "owlCyan", "light": "owlTeal" },
|
|
87
|
+
"syntaxTag": { "dark": "owlRed", "light": "owlRed" },
|
|
88
|
+
"syntaxAttribute": { "dark": "owlOrange", "light": "owlOrange" },
|
|
89
|
+
"syntaxRegexp": { "dark": "owlPink", "light": "owlPink" },
|
|
90
|
+
"syntaxNamespace": { "dark": "owlYellow", "light": "owlYellow" },
|
|
91
|
+
"syntaxParameter": { "dark": "owlOrange", "light": "owlOrange" },
|
|
92
|
+
"syntaxField": { "dark": "owlBlue", "light": "owlBlue" },
|
|
93
|
+
"syntaxBoolean": { "dark": "owlPurple", "light": "owlPurple" },
|
|
94
|
+
"syntaxSpecial": { "dark": "owlPink", "light": "owlPink" },
|
|
95
|
+
"syntaxEscapeChar": { "dark": "owlPink", "light": "owlPink" },
|
|
96
|
+
"syntaxLabel": { "dark": "owlPurple", "light": "owlPurple" },
|
|
97
|
+
"syntaxImport": { "dark": "owlCyan", "light": "owlTeal" },
|
|
98
|
+
"syntaxPreproc": { "dark": "owlOrange", "light": "owlOrange" },
|
|
99
|
+
"syntaxDiffPlus": { "dark": "owlGreen", "light": "owlGreen" },
|
|
100
|
+
"syntaxDiffMinus": { "dark": "owlRed", "light": "owlRed" },
|
|
101
|
+
"syntaxDiffLine": { "dark": "owlBlue", "light": "owlBlue" }
|
|
102
|
+
}
|
|
103
|
+
}
|