SaylorTwift HF Staff commited on
Commit
116a473
·
verified ·
1 Parent(s): 5f24abe

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. packages/console/app/.opencode/agent/css.md +149 -0
  2. packages/console/app/src/asset/black/hero.png +0 -0
  3. packages/console/app/src/asset/brand/opencode-logo-dark-square.png +0 -0
  4. packages/console/app/src/asset/brand/opencode-logo-dark-square.svg +18 -0
  5. packages/console/app/src/asset/brand/opencode-logo-dark.png +0 -0
  6. packages/console/app/src/asset/brand/opencode-logo-dark.svg +16 -0
  7. packages/console/app/src/asset/brand/opencode-logo-light-square.png +0 -0
  8. packages/console/app/src/asset/brand/opencode-logo-light-square.svg +18 -0
  9. packages/console/app/src/asset/brand/opencode-logo-light.png +0 -0
  10. packages/console/app/src/asset/brand/opencode-logo-light.svg +16 -0
  11. packages/console/app/src/asset/brand/opencode-wordmark-dark.png +0 -0
  12. packages/console/app/src/asset/brand/opencode-wordmark-dark.svg +30 -0
  13. packages/console/app/src/asset/brand/opencode-wordmark-light.png +0 -0
  14. packages/console/app/src/asset/brand/opencode-wordmark-light.svg +30 -0
  15. packages/console/app/src/asset/brand/opencode-wordmark-simple-dark.png +0 -0
  16. packages/console/app/src/asset/brand/opencode-wordmark-simple-dark.svg +22 -0
  17. packages/console/app/src/asset/brand/opencode-wordmark-simple-light.png +0 -0
  18. packages/console/app/src/asset/brand/opencode-wordmark-simple-light.svg +22 -0
  19. packages/console/app/src/asset/brand/preview-opencode-dark.png +0 -0
  20. packages/console/app/src/asset/brand/preview-opencode-logo-dark.png +0 -0
  21. packages/console/app/src/asset/brand/preview-opencode-logo-light-square.png +0 -0
  22. packages/console/app/src/asset/brand/preview-opencode-logo-light.png +0 -0
  23. packages/console/app/src/asset/brand/preview-opencode-wordmark-dark.png +0 -0
  24. packages/console/app/src/asset/brand/preview-opencode-wordmark-light.png +0 -0
  25. packages/console/app/src/asset/brand/preview-opencode-wordmark-simple-dark.png +0 -0
  26. packages/console/app/src/asset/brand/preview-opencode-wordmark-simple-light.png +0 -0
  27. packages/console/app/src/asset/lander/avatar-adam.png +0 -0
  28. packages/console/app/src/asset/lander/avatar-david.png +0 -0
  29. packages/console/app/src/asset/lander/avatar-dax.png +0 -0
  30. packages/console/app/src/asset/lander/avatar-frank.png +0 -0
  31. packages/console/app/src/asset/lander/avatar-jay.png +0 -0
  32. packages/console/app/src/asset/lander/brand-assets-dark.svg +10 -0
  33. packages/console/app/src/asset/lander/brand-assets-light.svg +10 -0
  34. packages/console/app/src/asset/lander/brand.png +0 -0
  35. packages/console/app/src/asset/lander/check.svg +3 -0
  36. packages/console/app/src/asset/lander/copy.svg +3 -0
  37. packages/console/app/src/asset/lander/desktop-app-icon.png +0 -0
  38. packages/console/app/src/asset/lander/dock.png +0 -0
  39. packages/console/app/src/asset/lander/logo-dark.svg +11 -0
  40. packages/console/app/src/asset/lander/logo-light.svg +11 -0
  41. packages/console/app/src/asset/lander/opencode-comparison-poster.png +0 -0
  42. packages/console/app/src/asset/lander/opencode-desktop-icon.png +0 -0
  43. packages/console/app/src/asset/lander/opencode-logo-dark.svg +11 -0
  44. packages/console/app/src/asset/lander/opencode-logo-light.svg +11 -0
  45. packages/console/app/src/asset/lander/opencode-poster.png +0 -0
  46. packages/console/app/src/asset/lander/opencode-wordmark-dark.svg +25 -0
  47. packages/console/app/src/asset/lander/opencode-wordmark-light.svg +25 -0
  48. packages/console/app/src/asset/lander/wordmark-dark.svg +3 -0
  49. packages/console/app/src/asset/lander/wordmark-light.svg +3 -0
  50. packages/console/app/src/routes/oauth/opencode/client.json.ts +38 -0
packages/console/app/.opencode/agent/css.md ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ description: use whenever you are styling a ui with css
3
+ ---
4
+
5
+ you are very good at writing clean maintainable css using modern techniques
6
+
7
+ css is structured like this
8
+
9
+ ```css
10
+ [data-page="home"] {
11
+ [data-component="header"] {
12
+ [data-slot="logo"] {
13
+ }
14
+ }
15
+ }
16
+ ```
17
+
18
+ top level pages are scoped using `data-page`
19
+
20
+ pages can break down into components using `data-component`
21
+
22
+ components can break down into slots using `data-slot`
23
+
24
+ structure things so that this hierarchy is followed IN YOUR CSS - you should rarely need to
25
+ nest components inside other components. you should NEVER nest components inside
26
+ slots. you should NEVER nest slots inside other slots.
27
+
28
+ **IMPORTANT: This hierarchy rule applies to CSS structure, NOT JSX/DOM structure.**
29
+
30
+ The hierarchy in css file does NOT have to match the hierarchy in the dom - you
31
+ can put components or slots at the same level in CSS even if one goes inside another in the DOM.
32
+
33
+ Your JSX can nest however makes semantic sense - components can be inside slots,
34
+ slots can contain components, etc. The DOM structure should be whatever makes the most
35
+ semantic and functional sense.
36
+
37
+ It is more important to follow the pages -> components -> slots structure IN YOUR CSS,
38
+ while keeping your JSX/DOM structure logical and semantic.
39
+
40
+ use data attributes to represent different states of the component
41
+
42
+ ```css
43
+ [data-component="modal"] {
44
+ opacity: 0;
45
+
46
+ &[data-state="open"] {
47
+ opacity: 1;
48
+ }
49
+ }
50
+ ```
51
+
52
+ this will allow jsx to control the styling
53
+
54
+ avoid selectors that just target an element type like `> span` you should assign
55
+ it a slot name. it's ok to do this sometimes where it makes sense semantically
56
+ like targeting `li` elements in a list
57
+
58
+ in terms of file structure `./src/style/` contains all universal styling rules.
59
+ these should not contain anything specific to a page
60
+
61
+ `./src/style/token` contains all the tokens used in the project
62
+
63
+ `./src/style/component` is for reusable components like buttons or inputs
64
+
65
+ page specific styles should go next to the page they are styling so
66
+ `./src/routes/about.tsx` should have its styles in `./src/routes/about.css`
67
+
68
+ `about.css` should be scoped using `data-page="about"`
69
+
70
+ ## Example of correct implementation
71
+
72
+ JSX can nest however makes sense semantically:
73
+
74
+ ```jsx
75
+ <div data-slot="left">
76
+ <div data-component="title">Section Title</div>
77
+ <div data-slot="content">Content here</div>
78
+ </div>
79
+ ```
80
+
81
+ CSS maintains clean hierarchy regardless of DOM nesting:
82
+
83
+ ```css
84
+ [data-page="home"] {
85
+ [data-component="screenshots"] {
86
+ [data-slot="left"] {
87
+ /* styles */
88
+ }
89
+ [data-slot="content"] {
90
+ /* styles */
91
+ }
92
+ }
93
+
94
+ [data-component="title"] {
95
+ /* can be at same level even though nested in DOM */
96
+ }
97
+ }
98
+ ```
99
+
100
+ ## Reusable Components
101
+
102
+ If a component is reused across multiple sections of the same page, define it at the page level:
103
+
104
+ ```jsx
105
+ <!-- Used in multiple places on the same page -->
106
+ <section data-component="install">
107
+ <div data-component="method">
108
+ <h3 data-component="title">npm</h3>
109
+ </div>
110
+ <div data-component="method">
111
+ <h3 data-component="title">bun</h3>
112
+ </div>
113
+ </section>
114
+
115
+ <section data-component="screenshots">
116
+ <div data-slot="left">
117
+ <div data-component="title">Screenshot Title</div>
118
+ </div>
119
+ </section>
120
+ ```
121
+
122
+ ```css
123
+ [data-page="home"] {
124
+ /* Reusable title component defined at page level since it's used in multiple components */
125
+ [data-component="title"] {
126
+ text-transform: uppercase;
127
+ font-weight: 400;
128
+ }
129
+
130
+ [data-component="install"] {
131
+ /* install-specific styles */
132
+ }
133
+
134
+ [data-component="screenshots"] {
135
+ /* screenshots-specific styles */
136
+ }
137
+ }
138
+ ```
139
+
140
+ This is correct because the `title` component has consistent styling and behavior across the page.
141
+
142
+ ## Key Clarifications
143
+
144
+ 1. **JSX Nesting is Flexible**: Components can be nested inside slots, slots can contain components - whatever makes semantic sense
145
+ 2. **CSS Hierarchy is Strict**: Follow pages → components → slots structure in CSS
146
+ 3. **Reusable Components**: Define at the appropriate level where they're shared (page level if used across the page, component level if only used within that component)
147
+ 4. **DOM vs CSS Structure**: These don't need to match - optimize each for its purpose
148
+
149
+ See ./src/routes/index.css and ./src/routes/index.tsx for a complete example.
packages/console/app/src/asset/black/hero.png ADDED
packages/console/app/src/asset/brand/opencode-logo-dark-square.png ADDED
packages/console/app/src/asset/brand/opencode-logo-dark-square.svg ADDED
packages/console/app/src/asset/brand/opencode-logo-dark.png ADDED
packages/console/app/src/asset/brand/opencode-logo-dark.svg ADDED
packages/console/app/src/asset/brand/opencode-logo-light-square.png ADDED
packages/console/app/src/asset/brand/opencode-logo-light-square.svg ADDED
packages/console/app/src/asset/brand/opencode-logo-light.png ADDED
packages/console/app/src/asset/brand/opencode-logo-light.svg ADDED
packages/console/app/src/asset/brand/opencode-wordmark-dark.png ADDED
packages/console/app/src/asset/brand/opencode-wordmark-dark.svg ADDED
packages/console/app/src/asset/brand/opencode-wordmark-light.png ADDED
packages/console/app/src/asset/brand/opencode-wordmark-light.svg ADDED
packages/console/app/src/asset/brand/opencode-wordmark-simple-dark.png ADDED
packages/console/app/src/asset/brand/opencode-wordmark-simple-dark.svg ADDED
packages/console/app/src/asset/brand/opencode-wordmark-simple-light.png ADDED
packages/console/app/src/asset/brand/opencode-wordmark-simple-light.svg ADDED
packages/console/app/src/asset/brand/preview-opencode-dark.png ADDED
packages/console/app/src/asset/brand/preview-opencode-logo-dark.png ADDED
packages/console/app/src/asset/brand/preview-opencode-logo-light-square.png ADDED
packages/console/app/src/asset/brand/preview-opencode-logo-light.png ADDED
packages/console/app/src/asset/brand/preview-opencode-wordmark-dark.png ADDED
packages/console/app/src/asset/brand/preview-opencode-wordmark-light.png ADDED
packages/console/app/src/asset/brand/preview-opencode-wordmark-simple-dark.png ADDED
packages/console/app/src/asset/brand/preview-opencode-wordmark-simple-light.png ADDED
packages/console/app/src/asset/lander/avatar-adam.png ADDED
packages/console/app/src/asset/lander/avatar-david.png ADDED
packages/console/app/src/asset/lander/avatar-dax.png ADDED
packages/console/app/src/asset/lander/avatar-frank.png ADDED
packages/console/app/src/asset/lander/avatar-jay.png ADDED
packages/console/app/src/asset/lander/brand-assets-dark.svg ADDED
packages/console/app/src/asset/lander/brand-assets-light.svg ADDED
packages/console/app/src/asset/lander/brand.png ADDED
packages/console/app/src/asset/lander/check.svg ADDED
packages/console/app/src/asset/lander/copy.svg ADDED
packages/console/app/src/asset/lander/desktop-app-icon.png ADDED
packages/console/app/src/asset/lander/dock.png ADDED
packages/console/app/src/asset/lander/logo-dark.svg ADDED
packages/console/app/src/asset/lander/logo-light.svg ADDED
packages/console/app/src/asset/lander/opencode-comparison-poster.png ADDED
packages/console/app/src/asset/lander/opencode-desktop-icon.png ADDED
packages/console/app/src/asset/lander/opencode-logo-dark.svg ADDED
packages/console/app/src/asset/lander/opencode-logo-light.svg ADDED
packages/console/app/src/asset/lander/opencode-poster.png ADDED
packages/console/app/src/asset/lander/opencode-wordmark-dark.svg ADDED
packages/console/app/src/asset/lander/opencode-wordmark-light.svg ADDED
packages/console/app/src/asset/lander/wordmark-dark.svg ADDED
packages/console/app/src/asset/lander/wordmark-light.svg ADDED
packages/console/app/src/routes/oauth/opencode/client.json.ts ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import type { APIEvent } from "@solidjs/start/server"
2
+
3
+ // OAuth Client ID Metadata Document for the opencode client.
4
+ // Spec: https://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata-document/
5
+ //
6
+ // When an MCP server's authorization server supports this, opencode sends this URL as its OAuth client_id
7
+ // instead of registering a new client. The authorization server fetches the document to learn our name and
8
+ // allowed redirect URIs. The client_id field must equal the exact URL the document was fetched from, so it is
9
+ // built from the request origin and stays valid on dev.opencode.ai as well as production.
10
+ //
11
+ // redirect_uris have no port because opencode binds an ephemeral port per login. RFC 8252 section 7.3 has
12
+ // authorization servers ignore the port when matching loopback redirects for native apps.
13
+ const PATH = "/oauth/opencode/client.json"
14
+
15
+ const cache = "public, max-age=300"
16
+
17
+ export function GET(event: APIEvent) {
18
+ const origin = new URL(event.request.url).origin
19
+ const document = {
20
+ client_id: origin + PATH,
21
+ client_name: "opencode",
22
+ client_uri: origin,
23
+ logo_uri: origin + "/web-app-manifest-512x512.png",
24
+ application_type: "native",
25
+ redirect_uris: ["http://127.0.0.1/callback", "http://localhost/callback"],
26
+ grant_types: ["authorization_code", "refresh_token"],
27
+ response_types: ["code"],
28
+ token_endpoint_auth_method: "none",
29
+ token_endpoint_auth_methods_supported: ["none"],
30
+ }
31
+ return new Response(JSON.stringify(document, null, 2), {
32
+ headers: {
33
+ "Content-Type": "application/json",
34
+ "Cache-Control": cache,
35
+ "Access-Control-Allow-Origin": "*",
36
+ },
37
+ })
38
+ }