@fugood/bricks-project 2.24.0-beta.2 → 2.24.0-beta.21

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 (110) hide show
  1. package/compile/action-name-map.ts +14 -0
  2. package/compile/index.ts +377 -129
  3. package/package.json +8 -3
  4. package/skills/bricks-project/rules/architecture-patterns.md +7 -0
  5. package/skills/bricks-project/rules/automations.md +74 -28
  6. package/skills/bricks-project/rules/buttress.md +9 -6
  7. package/tools/deploy.ts +39 -10
  8. package/tools/mcp-server.ts +10 -877
  9. package/tools/mcp-tools/compile.ts +91 -0
  10. package/tools/mcp-tools/huggingface.ts +762 -0
  11. package/tools/mcp-tools/icons.ts +60 -0
  12. package/tools/mcp-tools/lottie.ts +102 -0
  13. package/tools/mcp-tools/media.ts +110 -0
  14. package/tools/postinstall.ts +121 -33
  15. package/tools/preview-main.mjs +12 -8
  16. package/tools/pull.ts +37 -19
  17. package/tsconfig.json +16 -0
  18. package/types/animation.ts +4 -0
  19. package/types/automation.ts +3 -0
  20. package/types/brick-base.ts +1 -1
  21. package/types/bricks/Camera.ts +34 -7
  22. package/types/bricks/Chart.ts +1 -1
  23. package/types/bricks/GenerativeMedia.ts +6 -6
  24. package/types/bricks/Icon.ts +3 -3
  25. package/types/bricks/Image.ts +4 -4
  26. package/types/bricks/Items.ts +7 -7
  27. package/types/bricks/Lottie.ts +4 -4
  28. package/types/bricks/Maps.ts +4 -4
  29. package/types/bricks/QrCode.ts +4 -4
  30. package/types/bricks/Rect.ts +4 -4
  31. package/types/bricks/RichText.ts +3 -3
  32. package/types/bricks/Rive.ts +1 -1
  33. package/types/bricks/Slideshow.ts +4 -4
  34. package/types/bricks/Svg.ts +3 -3
  35. package/types/bricks/Text.ts +4 -4
  36. package/types/bricks/TextInput.ts +11 -7
  37. package/types/bricks/Video.ts +4 -4
  38. package/types/bricks/VideoStreaming.ts +3 -3
  39. package/types/bricks/WebRtcStream.ts +1 -1
  40. package/types/bricks/WebView.ts +4 -4
  41. package/types/canvas.ts +4 -2
  42. package/types/common.ts +9 -4
  43. package/types/data-calc-command.ts +2 -0
  44. package/types/data-calc.ts +1 -0
  45. package/types/data.ts +2 -0
  46. package/types/generators/AlarmClock.ts +5 -5
  47. package/types/generators/Assistant.ts +57 -12
  48. package/types/generators/BleCentral.ts +12 -4
  49. package/types/generators/BlePeripheral.ts +5 -5
  50. package/types/generators/CanvasMap.ts +4 -4
  51. package/types/generators/CastlesPay.ts +3 -3
  52. package/types/generators/DataBank.ts +31 -4
  53. package/types/generators/File.ts +63 -14
  54. package/types/generators/GraphQl.ts +3 -3
  55. package/types/generators/Http.ts +27 -8
  56. package/types/generators/HttpServer.ts +9 -9
  57. package/types/generators/Information.ts +2 -2
  58. package/types/generators/Intent.ts +8 -2
  59. package/types/generators/Iterator.ts +6 -6
  60. package/types/generators/Keyboard.ts +18 -8
  61. package/types/generators/LlmAnthropicCompat.ts +12 -6
  62. package/types/generators/LlmAppleBuiltin.ts +6 -6
  63. package/types/generators/LlmGgml.ts +75 -25
  64. package/types/generators/LlmMlx.ts +210 -0
  65. package/types/generators/LlmOnnx.ts +18 -9
  66. package/types/generators/LlmOpenAiCompat.ts +22 -6
  67. package/types/generators/LlmQualcommAiEngine.ts +32 -8
  68. package/types/generators/Mcp.ts +332 -17
  69. package/types/generators/McpServer.ts +38 -11
  70. package/types/generators/MediaFlow.ts +26 -8
  71. package/types/generators/MqttBroker.ts +10 -4
  72. package/types/generators/MqttClient.ts +11 -5
  73. package/types/generators/Question.ts +6 -6
  74. package/types/generators/RealtimeTranscription.ts +70 -11
  75. package/types/generators/RerankerGgml.ts +23 -9
  76. package/types/generators/SerialPort.ts +6 -6
  77. package/types/generators/SoundPlayer.ts +2 -2
  78. package/types/generators/SoundRecorder.ts +5 -5
  79. package/types/generators/SpeechToTextGgml.ts +34 -14
  80. package/types/generators/SpeechToTextOnnx.ts +8 -8
  81. package/types/generators/SpeechToTextPlatform.ts +4 -4
  82. package/types/generators/SqLite.ts +10 -6
  83. package/types/generators/Step.ts +3 -3
  84. package/types/generators/SttAppleBuiltin.ts +6 -6
  85. package/types/generators/Tcp.ts +5 -5
  86. package/types/generators/TcpServer.ts +7 -7
  87. package/types/generators/TextToSpeechApple.ts +1 -1
  88. package/types/generators/TextToSpeechAppleBuiltin.ts +5 -5
  89. package/types/generators/TextToSpeechGgml.ts +8 -8
  90. package/types/generators/TextToSpeechOnnx.ts +9 -9
  91. package/types/generators/TextToSpeechOpenAiLike.ts +5 -5
  92. package/types/generators/ThermalPrinter.ts +6 -6
  93. package/types/generators/Tick.ts +3 -3
  94. package/types/generators/Udp.ts +9 -4
  95. package/types/generators/VadGgml.ts +39 -10
  96. package/types/generators/VadOnnx.ts +31 -8
  97. package/types/generators/VadTraditional.ts +15 -9
  98. package/types/generators/VectorStore.ts +26 -9
  99. package/types/generators/Watchdog.ts +11 -6
  100. package/types/generators/WebCrawler.ts +5 -5
  101. package/types/generators/WebRtc.ts +17 -11
  102. package/types/generators/WebSocket.ts +5 -5
  103. package/types/generators/index.ts +1 -0
  104. package/types/subspace.ts +1 -0
  105. package/types/system.ts +1 -1
  106. package/utils/calc.ts +12 -8
  107. package/utils/event-props.ts +104 -87
  108. package/utils/id.ts +4 -0
  109. package/api/index.ts +0 -1
  110. package/api/instance.ts +0 -213
package/api/instance.ts DELETED
@@ -1,213 +0,0 @@
1
- const apiUrlMap = {
2
- production: 'https://display.bricks.tools/api/graphql-workspace',
3
- beta: 'https://display-beta.bricks.tools/api/graphql-workspace',
4
- development: 'http://localhost:3001/api/graphql-workspace',
5
- }
6
-
7
- const workspaceToken = process.env.BRICKS_WORKSPACE_TOKEN
8
-
9
- type Stage = 'production' | 'beta' | 'development'
10
-
11
- const doGQL = async (stage: Stage, query: string, variables: Record<string, any>) => {
12
- if (!workspaceToken) throw new Error('env BRICKS_WORKSPACE_TOKEN is not set')
13
-
14
- const apiURL = apiUrlMap[stage]
15
- if (!apiURL) throw new Error(`Invalid stage: ${stage}`)
16
-
17
- const data = await fetch(apiURL, {
18
- method: 'POST',
19
- headers: {
20
- 'Content-Type': 'application/json',
21
- Authorization: `Bearer ${workspaceToken}`,
22
- },
23
- body: JSON.stringify({ query, variables }),
24
- }).then((res) => res.json())
25
-
26
- if (data.error && data.error.message) throw new Error(data.error.message)
27
- return data
28
- }
29
-
30
- export const pullApp = async (stage: Stage, appId: string) => {
31
- const { data, errors } = await doGQL(
32
- stage,
33
- `query BRICKS_PROJECT_application($id: ID!) {
34
- application(id: $id) {
35
- _id
36
- name
37
- description
38
- config
39
- lock {
40
- enabled
41
- }
42
- dev_ref {
43
- is_dev
44
- }
45
- }
46
- }`,
47
- { id: appId },
48
- )
49
- if (errors) throw new Error(errors[0].message)
50
-
51
- const app = data.application
52
- if (!app) throw new Error('App not found')
53
- if (app.lock.enabled) throw new Error('App is locked')
54
- // TODO: Uncomment it on leaving experimental
55
- // if (!app.dev_ref.is_dev)
56
- // throw new Error(
57
- // 'Currently BRICKS Project is experimental, please use the fork version of the app',
58
- // )
59
- return app
60
- }
61
-
62
- type Config = { title?: string }
63
-
64
- export const deployApp = async (
65
- stage: Stage,
66
- appId: string,
67
- config: Config,
68
- lastCommitId?: string,
69
- changelogs?: string,
70
- version?: string,
71
- ) => {
72
- const app = await pullApp(stage, appId)
73
- if (app.config?.bricks_project_last_commit_id === lastCommitId)
74
- throw new Error('No changes to deploy')
75
-
76
- const versionName = version || app.name || 'Untitled'
77
- const releaseNote = changelogs
78
- ? `${changelogs}\n\nRelease by BRICKS Project`
79
- : 'Release by BRICKS Project'
80
-
81
- const { errors } = await doGQL(
82
- stage,
83
- `mutation BRICKS_PROJECT_releaseApplication(
84
- $id: ID!,
85
- $config: String,
86
- $releaseCurrentVersion: String,
87
- $releaseCurrentVersionNote: String
88
- ) {
89
- updateApplication(
90
- id: $id,
91
- config: $config,
92
- releaseCurrentVersion: $releaseCurrentVersion,
93
- releaseCurrentVersionNote: $releaseCurrentVersionNote
94
- ) {
95
- _id
96
- name
97
- }
98
- }`,
99
- {
100
- id: appId,
101
- config: JSON.stringify({
102
- ...config,
103
- title: versionName,
104
- bricks_project_last_commit_id: lastCommitId,
105
- }),
106
- releaseCurrentVersion: versionName,
107
- releaseCurrentVersionNote: releaseNote,
108
- },
109
- )
110
- if (errors) throw new Error(errors[0].message)
111
- return true
112
- }
113
-
114
- export const pullApplicationProject = async (stage: Stage, appId: string) => {
115
- const { data, errors } = await doGQL(
116
- stage,
117
- `query BRICKS_PROJECT_applicationProject($id: ID!) {
118
- UNSTABLE_applicationProject(id: $id, buildApplicationOnly: true)
119
- }`,
120
- { id: appId },
121
- )
122
- if (errors) throw new Error(errors[0].message)
123
- if (!data.UNSTABLE_applicationProject) throw new Error('Application not found')
124
- return data.UNSTABLE_applicationProject
125
- }
126
-
127
- export const pullModule = async (stage: Stage, modId: string) => {
128
- const { data, errors } = await doGQL(
129
- stage,
130
- `query BRICKS_PROJECT_module($id: ID!) {
131
- module(id: $id) {
132
- _id
133
- name
134
- description
135
- is_public
136
- config
137
- }
138
- }`,
139
- { id: modId },
140
- )
141
- if (errors) throw new Error(errors[0].message)
142
- const mod = data.module
143
- if (!mod) throw new Error('Module not found')
144
- if (mod.is_public)
145
- throw new Error(
146
- 'Currently BRICKS Project is experimental, public module deployment is temporary not recommended',
147
- )
148
- return mod
149
- }
150
-
151
- export const deployModule = async (
152
- stage: Stage,
153
- modId: string,
154
- config: Config,
155
- lastCommitId?: string,
156
- changelogs?: string,
157
- version?: string,
158
- ) => {
159
- const mod = await pullModule(stage, modId)
160
- if (mod.config?.bricks_project_last_commit_id === lastCommitId)
161
- throw new Error('No changes to deploy')
162
-
163
- const versionName = version || mod.name || 'Untitled'
164
- const releaseNote = changelogs
165
- ? `${changelogs}\n\nRelease by BRICKS Project`
166
- : 'Release by BRICKS Project'
167
-
168
- const { errors } = await doGQL(
169
- stage,
170
- `mutation BRICKS_PROJECT_releaseModule(
171
- $id: ID!,
172
- $config: String,
173
- $releaseCurrentVersion: String,
174
- $releaseCurrentVersionNote: String
175
- ) {
176
- updateModule(
177
- id: $id
178
- config: $config
179
- validateConfig: true
180
- releaseCurrentVersion: $releaseCurrentVersion
181
- releaseCurrentVersionNote: $releaseCurrentVersionNote
182
- ) {
183
- _id
184
- name
185
- }
186
- }`,
187
- {
188
- id: modId,
189
- config: JSON.stringify({
190
- ...config,
191
- title: versionName,
192
- bricks_project_last_commit_id: lastCommitId,
193
- }),
194
- releaseCurrentVersion: versionName,
195
- releaseCurrentVersionNote: releaseNote,
196
- },
197
- )
198
- if (errors) throw new Error(errors[0].message)
199
- return true
200
- }
201
-
202
- export const pullModuleProject = async (stage: Stage, modId: string) => {
203
- const { data, errors } = await doGQL(
204
- stage,
205
- `query BRICKS_PROJECT_moduleProject($id: ID!) {
206
- UNSTABLE_moduleProject(id: $id, buildApplicationOnly: true)
207
- }`,
208
- { id: modId },
209
- )
210
- if (errors) throw new Error(errors[0].message)
211
- if (!data.UNSTABLE_moduleProject) throw new Error('Module not found')
212
- return data.UNSTABLE_moduleProject
213
- }