@brianli/kimaki 0.4.72-brianli.1

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 (328) hide show
  1. package/bin.js +2 -0
  2. package/dist/ai-tool-to-genai.js +233 -0
  3. package/dist/ai-tool-to-genai.test.js +267 -0
  4. package/dist/ai-tool.js +6 -0
  5. package/dist/bin.js +87 -0
  6. package/dist/bot-token.js +121 -0
  7. package/dist/bot-token.test.js +134 -0
  8. package/dist/channel-management.js +101 -0
  9. package/dist/cli-parsing.test.js +89 -0
  10. package/dist/cli.js +2529 -0
  11. package/dist/commands/abort.js +82 -0
  12. package/dist/commands/action-buttons.js +257 -0
  13. package/dist/commands/add-project.js +114 -0
  14. package/dist/commands/agent.js +291 -0
  15. package/dist/commands/ask-question.js +223 -0
  16. package/dist/commands/compact.js +120 -0
  17. package/dist/commands/context-usage.js +140 -0
  18. package/dist/commands/create-new-project.js +118 -0
  19. package/dist/commands/diff.js +128 -0
  20. package/dist/commands/file-upload.js +275 -0
  21. package/dist/commands/fork.js +217 -0
  22. package/dist/commands/gemini-apikey.js +70 -0
  23. package/dist/commands/login.js +490 -0
  24. package/dist/commands/mention-mode.js +51 -0
  25. package/dist/commands/merge-worktree.js +124 -0
  26. package/dist/commands/model.js +694 -0
  27. package/dist/commands/permissions.js +163 -0
  28. package/dist/commands/queue.js +217 -0
  29. package/dist/commands/remove-project.js +115 -0
  30. package/dist/commands/restart-opencode-server.js +116 -0
  31. package/dist/commands/resume.js +159 -0
  32. package/dist/commands/run-command.js +79 -0
  33. package/dist/commands/session-id.js +78 -0
  34. package/dist/commands/session.js +192 -0
  35. package/dist/commands/share.js +80 -0
  36. package/dist/commands/types.js +2 -0
  37. package/dist/commands/undo-redo.js +159 -0
  38. package/dist/commands/unset-model.js +152 -0
  39. package/dist/commands/upgrade.js +42 -0
  40. package/dist/commands/user-command.js +148 -0
  41. package/dist/commands/verbosity.js +60 -0
  42. package/dist/commands/worktree-settings.js +50 -0
  43. package/dist/commands/worktree.js +299 -0
  44. package/dist/condense-memory.js +33 -0
  45. package/dist/config.js +110 -0
  46. package/dist/database.js +1050 -0
  47. package/dist/db.js +159 -0
  48. package/dist/db.test.js +49 -0
  49. package/dist/discord-api.js +28 -0
  50. package/dist/discord-auth.js +231 -0
  51. package/dist/discord-auth.test.js +80 -0
  52. package/dist/discord-bot.js +997 -0
  53. package/dist/discord-utils.js +560 -0
  54. package/dist/discord-utils.test.js +115 -0
  55. package/dist/errors.js +167 -0
  56. package/dist/escape-backticks.test.js +429 -0
  57. package/dist/format-tables.js +122 -0
  58. package/dist/format-tables.test.js +199 -0
  59. package/dist/forum-sync/config.js +79 -0
  60. package/dist/forum-sync/discord-operations.js +154 -0
  61. package/dist/forum-sync/index.js +5 -0
  62. package/dist/forum-sync/markdown.js +117 -0
  63. package/dist/forum-sync/sync-to-discord.js +417 -0
  64. package/dist/forum-sync/sync-to-files.js +190 -0
  65. package/dist/forum-sync/types.js +53 -0
  66. package/dist/forum-sync/watchers.js +307 -0
  67. package/dist/gateway-consumer.js +232 -0
  68. package/dist/gateway-consumer.test.js +18 -0
  69. package/dist/genai-worker-wrapper.js +111 -0
  70. package/dist/genai-worker.js +311 -0
  71. package/dist/genai.js +232 -0
  72. package/dist/generated/browser.js +17 -0
  73. package/dist/generated/client.js +35 -0
  74. package/dist/generated/commonInputTypes.js +10 -0
  75. package/dist/generated/enums.js +30 -0
  76. package/dist/generated/internal/class.js +41 -0
  77. package/dist/generated/internal/prismaNamespace.js +239 -0
  78. package/dist/generated/internal/prismaNamespaceBrowser.js +209 -0
  79. package/dist/generated/models/bot_api_keys.js +1 -0
  80. package/dist/generated/models/bot_tokens.js +1 -0
  81. package/dist/generated/models/channel_agents.js +1 -0
  82. package/dist/generated/models/channel_directories.js +1 -0
  83. package/dist/generated/models/channel_mention_mode.js +1 -0
  84. package/dist/generated/models/channel_models.js +1 -0
  85. package/dist/generated/models/channel_verbosity.js +1 -0
  86. package/dist/generated/models/channel_worktrees.js +1 -0
  87. package/dist/generated/models/forum_sync_configs.js +1 -0
  88. package/dist/generated/models/global_models.js +1 -0
  89. package/dist/generated/models/ipc_requests.js +1 -0
  90. package/dist/generated/models/part_messages.js +1 -0
  91. package/dist/generated/models/scheduled_tasks.js +1 -0
  92. package/dist/generated/models/session_agents.js +1 -0
  93. package/dist/generated/models/session_models.js +1 -0
  94. package/dist/generated/models/session_start_sources.js +1 -0
  95. package/dist/generated/models/thread_sessions.js +1 -0
  96. package/dist/generated/models/thread_worktrees.js +1 -0
  97. package/dist/generated/models.js +1 -0
  98. package/dist/heap-monitor.js +95 -0
  99. package/dist/hrana-server.js +416 -0
  100. package/dist/hrana-server.test.js +368 -0
  101. package/dist/image-utils.js +112 -0
  102. package/dist/interaction-handler.js +327 -0
  103. package/dist/ipc-polling.js +251 -0
  104. package/dist/kimaki-digital-twin.e2e.test.js +165 -0
  105. package/dist/limit-heading-depth.js +25 -0
  106. package/dist/limit-heading-depth.test.js +105 -0
  107. package/dist/logger.js +160 -0
  108. package/dist/markdown.js +342 -0
  109. package/dist/markdown.test.js +253 -0
  110. package/dist/message-formatting.js +433 -0
  111. package/dist/message-formatting.test.js +73 -0
  112. package/dist/openai-realtime.js +228 -0
  113. package/dist/opencode-plugin-loading.e2e.test.js +91 -0
  114. package/dist/opencode-plugin.js +536 -0
  115. package/dist/opencode-plugin.test.js +98 -0
  116. package/dist/opencode.js +409 -0
  117. package/dist/privacy-sanitizer.js +105 -0
  118. package/dist/runtime-mode.js +51 -0
  119. package/dist/runtime-mode.test.js +115 -0
  120. package/dist/sentry.js +127 -0
  121. package/dist/session-handler/state.js +151 -0
  122. package/dist/session-handler.js +1874 -0
  123. package/dist/session-search.js +100 -0
  124. package/dist/session-search.test.js +40 -0
  125. package/dist/startup-service.js +153 -0
  126. package/dist/system-message.js +499 -0
  127. package/dist/task-runner.js +282 -0
  128. package/dist/task-schedule.js +191 -0
  129. package/dist/task-schedule.test.js +71 -0
  130. package/dist/thinking-utils.js +35 -0
  131. package/dist/thread-message-queue.e2e.test.js +781 -0
  132. package/dist/tools.js +359 -0
  133. package/dist/unnest-code-blocks.js +136 -0
  134. package/dist/unnest-code-blocks.test.js +641 -0
  135. package/dist/upgrade.js +114 -0
  136. package/dist/utils.js +109 -0
  137. package/dist/voice-handler.js +606 -0
  138. package/dist/voice.js +304 -0
  139. package/dist/voice.test.js +187 -0
  140. package/dist/wait-session.js +94 -0
  141. package/dist/worker-types.js +4 -0
  142. package/dist/worktree-utils.js +727 -0
  143. package/dist/xml.js +92 -0
  144. package/dist/xml.test.js +32 -0
  145. package/package.json +82 -0
  146. package/schema.prisma +246 -0
  147. package/skills/batch/SKILL.md +87 -0
  148. package/skills/critique/SKILL.md +129 -0
  149. package/skills/errore/SKILL.md +589 -0
  150. package/skills/goke/.prettierrc +5 -0
  151. package/skills/goke/CHANGELOG.md +40 -0
  152. package/skills/goke/LICENSE +21 -0
  153. package/skills/goke/README.md +666 -0
  154. package/skills/goke/SKILL.md +458 -0
  155. package/skills/goke/package.json +43 -0
  156. package/skills/goke/src/__test__/coerce.test.ts +411 -0
  157. package/skills/goke/src/__test__/index.test.ts +1798 -0
  158. package/skills/goke/src/__test__/types.test-d.ts +111 -0
  159. package/skills/goke/src/coerce.ts +547 -0
  160. package/skills/goke/src/goke.ts +1362 -0
  161. package/skills/goke/src/index.ts +16 -0
  162. package/skills/goke/src/mri.ts +164 -0
  163. package/skills/goke/tsconfig.json +15 -0
  164. package/skills/jitter/EDITOR.md +219 -0
  165. package/skills/jitter/EXPORT-INTERNALS.md +309 -0
  166. package/skills/jitter/SKILL.md +158 -0
  167. package/skills/jitter/jitter-clipboard.json +1042 -0
  168. package/skills/jitter/package.json +14 -0
  169. package/skills/jitter/tsconfig.json +15 -0
  170. package/skills/jitter/utils/actions.ts +212 -0
  171. package/skills/jitter/utils/export.ts +114 -0
  172. package/skills/jitter/utils/index.ts +141 -0
  173. package/skills/jitter/utils/snapshot.ts +154 -0
  174. package/skills/jitter/utils/traverse.ts +246 -0
  175. package/skills/jitter/utils/types.ts +279 -0
  176. package/skills/jitter/utils/wait.ts +133 -0
  177. package/skills/playwriter/SKILL.md +31 -0
  178. package/skills/security-review/SKILL.md +208 -0
  179. package/skills/simplify/SKILL.md +58 -0
  180. package/skills/termcast/SKILL.md +945 -0
  181. package/skills/tuistory/SKILL.md +250 -0
  182. package/skills/zustand-centralized-state/SKILL.md +582 -0
  183. package/src/__snapshots__/compact-session-context-no-system.md +35 -0
  184. package/src/__snapshots__/compact-session-context.md +41 -0
  185. package/src/__snapshots__/first-session-no-info.md +17 -0
  186. package/src/__snapshots__/first-session-with-info.md +23 -0
  187. package/src/__snapshots__/session-1.md +17 -0
  188. package/src/__snapshots__/session-2.md +5871 -0
  189. package/src/__snapshots__/session-3.md +17 -0
  190. package/src/__snapshots__/session-with-tools.md +5871 -0
  191. package/src/ai-tool-to-genai.test.ts +296 -0
  192. package/src/ai-tool-to-genai.ts +282 -0
  193. package/src/ai-tool.ts +39 -0
  194. package/src/bin.ts +108 -0
  195. package/src/bot-token.test.ts +171 -0
  196. package/src/bot-token.ts +159 -0
  197. package/src/channel-management.ts +172 -0
  198. package/src/cli-parsing.test.ts +132 -0
  199. package/src/cli.ts +3605 -0
  200. package/src/commands/abort.ts +112 -0
  201. package/src/commands/action-buttons.ts +376 -0
  202. package/src/commands/add-project.ts +152 -0
  203. package/src/commands/agent.ts +404 -0
  204. package/src/commands/ask-question.ts +330 -0
  205. package/src/commands/compact.ts +157 -0
  206. package/src/commands/context-usage.ts +199 -0
  207. package/src/commands/create-new-project.ts +179 -0
  208. package/src/commands/diff.ts +165 -0
  209. package/src/commands/file-upload.ts +389 -0
  210. package/src/commands/fork.ts +320 -0
  211. package/src/commands/gemini-apikey.ts +104 -0
  212. package/src/commands/login.ts +634 -0
  213. package/src/commands/mention-mode.ts +77 -0
  214. package/src/commands/merge-worktree.ts +177 -0
  215. package/src/commands/model.ts +961 -0
  216. package/src/commands/permissions.ts +261 -0
  217. package/src/commands/queue.ts +296 -0
  218. package/src/commands/remove-project.ts +155 -0
  219. package/src/commands/restart-opencode-server.ts +162 -0
  220. package/src/commands/resume.ts +242 -0
  221. package/src/commands/run-command.ts +123 -0
  222. package/src/commands/session-id.ts +109 -0
  223. package/src/commands/session.ts +250 -0
  224. package/src/commands/share.ts +106 -0
  225. package/src/commands/types.ts +25 -0
  226. package/src/commands/undo-redo.ts +221 -0
  227. package/src/commands/unset-model.ts +189 -0
  228. package/src/commands/upgrade.ts +52 -0
  229. package/src/commands/user-command.ts +193 -0
  230. package/src/commands/verbosity.ts +88 -0
  231. package/src/commands/worktree-settings.ts +79 -0
  232. package/src/commands/worktree.ts +431 -0
  233. package/src/condense-memory.ts +36 -0
  234. package/src/config.ts +148 -0
  235. package/src/database.ts +1530 -0
  236. package/src/db.test.ts +60 -0
  237. package/src/db.ts +190 -0
  238. package/src/discord-api.ts +35 -0
  239. package/src/discord-bot.ts +1316 -0
  240. package/src/discord-utils.test.ts +132 -0
  241. package/src/discord-utils.ts +767 -0
  242. package/src/errors.ts +213 -0
  243. package/src/escape-backticks.test.ts +469 -0
  244. package/src/format-tables.test.ts +223 -0
  245. package/src/format-tables.ts +145 -0
  246. package/src/forum-sync/config.ts +92 -0
  247. package/src/forum-sync/discord-operations.ts +241 -0
  248. package/src/forum-sync/index.ts +9 -0
  249. package/src/forum-sync/markdown.ts +176 -0
  250. package/src/forum-sync/sync-to-discord.ts +595 -0
  251. package/src/forum-sync/sync-to-files.ts +294 -0
  252. package/src/forum-sync/types.ts +175 -0
  253. package/src/forum-sync/watchers.ts +454 -0
  254. package/src/genai-worker-wrapper.ts +164 -0
  255. package/src/genai-worker.ts +386 -0
  256. package/src/genai.ts +321 -0
  257. package/src/generated/browser.ts +109 -0
  258. package/src/generated/client.ts +131 -0
  259. package/src/generated/commonInputTypes.ts +512 -0
  260. package/src/generated/enums.ts +46 -0
  261. package/src/generated/internal/class.ts +362 -0
  262. package/src/generated/internal/prismaNamespace.ts +2251 -0
  263. package/src/generated/internal/prismaNamespaceBrowser.ts +308 -0
  264. package/src/generated/models/bot_api_keys.ts +1288 -0
  265. package/src/generated/models/bot_tokens.ts +1577 -0
  266. package/src/generated/models/channel_agents.ts +1256 -0
  267. package/src/generated/models/channel_directories.ts +2104 -0
  268. package/src/generated/models/channel_mention_mode.ts +1300 -0
  269. package/src/generated/models/channel_models.ts +1288 -0
  270. package/src/generated/models/channel_verbosity.ts +1224 -0
  271. package/src/generated/models/channel_worktrees.ts +1308 -0
  272. package/src/generated/models/forum_sync_configs.ts +1452 -0
  273. package/src/generated/models/global_models.ts +1288 -0
  274. package/src/generated/models/ipc_requests.ts +1485 -0
  275. package/src/generated/models/part_messages.ts +1302 -0
  276. package/src/generated/models/scheduled_tasks.ts +2320 -0
  277. package/src/generated/models/session_agents.ts +1086 -0
  278. package/src/generated/models/session_models.ts +1114 -0
  279. package/src/generated/models/session_start_sources.ts +1408 -0
  280. package/src/generated/models/thread_sessions.ts +1599 -0
  281. package/src/generated/models/thread_worktrees.ts +1352 -0
  282. package/src/generated/models.ts +29 -0
  283. package/src/heap-monitor.ts +121 -0
  284. package/src/hrana-server.test.ts +428 -0
  285. package/src/hrana-server.ts +547 -0
  286. package/src/image-utils.ts +149 -0
  287. package/src/interaction-handler.ts +461 -0
  288. package/src/ipc-polling.ts +325 -0
  289. package/src/kimaki-digital-twin.e2e.test.ts +201 -0
  290. package/src/limit-heading-depth.test.ts +116 -0
  291. package/src/limit-heading-depth.ts +26 -0
  292. package/src/logger.ts +203 -0
  293. package/src/markdown.test.ts +360 -0
  294. package/src/markdown.ts +410 -0
  295. package/src/message-formatting.test.ts +81 -0
  296. package/src/message-formatting.ts +549 -0
  297. package/src/openai-realtime.ts +362 -0
  298. package/src/opencode-plugin-loading.e2e.test.ts +112 -0
  299. package/src/opencode-plugin.test.ts +108 -0
  300. package/src/opencode-plugin.ts +652 -0
  301. package/src/opencode.ts +554 -0
  302. package/src/privacy-sanitizer.ts +142 -0
  303. package/src/schema.sql +158 -0
  304. package/src/sentry.ts +137 -0
  305. package/src/session-handler/state.ts +232 -0
  306. package/src/session-handler.ts +2668 -0
  307. package/src/session-search.test.ts +50 -0
  308. package/src/session-search.ts +148 -0
  309. package/src/startup-service.ts +200 -0
  310. package/src/system-message.ts +568 -0
  311. package/src/task-runner.ts +425 -0
  312. package/src/task-schedule.test.ts +84 -0
  313. package/src/task-schedule.ts +287 -0
  314. package/src/thinking-utils.ts +61 -0
  315. package/src/thread-message-queue.e2e.test.ts +997 -0
  316. package/src/tools.ts +432 -0
  317. package/src/unnest-code-blocks.test.ts +679 -0
  318. package/src/unnest-code-blocks.ts +168 -0
  319. package/src/upgrade.ts +127 -0
  320. package/src/utils.ts +145 -0
  321. package/src/voice-handler.ts +852 -0
  322. package/src/voice.test.ts +219 -0
  323. package/src/voice.ts +444 -0
  324. package/src/wait-session.ts +147 -0
  325. package/src/worker-types.ts +64 -0
  326. package/src/worktree-utils.ts +988 -0
  327. package/src/xml.test.ts +38 -0
  328. package/src/xml.ts +121 -0
@@ -0,0 +1,16 @@
1
+ import Goke from "./goke.js"
2
+ import type { GokeOptions } from "./goke.js"
3
+ import { Command } from "./goke.js"
4
+
5
+ /**
6
+ * @param name The program name to display in help and version message
7
+ * @param options Configuration for stdout, stderr, and argv
8
+ */
9
+ const goke = (name = '', options?: GokeOptions) => new Goke(name, options)
10
+
11
+ export default goke
12
+ export { goke, Goke, Command }
13
+ export { createConsole } from "./goke.js"
14
+ export type { GokeOutputStream, GokeConsole, GokeOptions } from "./goke.js"
15
+ export type { StandardTypedV1, StandardJSONSchemaV1, JsonSchema } from "./coerce.js"
16
+ export { GokeError, coerceBySchema, extractJsonSchema, wrapJsonSchema, isStandardSchema, extractSchemaMetadata } from "./coerce.js"
@@ -0,0 +1,164 @@
1
+ // Vendored from mri@1.2.0 by Luke Edwards (MIT license)
2
+ // https://github.com/lukeed/mri
3
+ // Converted to TypeScript for zero-dependency bundling.
4
+
5
+ type Dict<T> = Record<string, T>
6
+ type Arrayable<T> = T | T[]
7
+
8
+ export interface MriOptions {
9
+ boolean?: Arrayable<string>
10
+ string?: Arrayable<string>
11
+ alias?: Dict<Arrayable<string>>
12
+ default?: Dict<any>
13
+ unknown?(flag: string): void
14
+ }
15
+
16
+ export type MriArgv<T = Dict<any>> = T & {
17
+ _: string[]
18
+ }
19
+
20
+ function toArr(any: Arrayable<string> | undefined): string[] {
21
+ return any == null ? [] : Array.isArray(any) ? any : [any]
22
+ }
23
+
24
+ // Automatic number coercion is intentionally disabled.
25
+ // All non-boolean values are kept as strings. Type conversion is handled
26
+ // by coerceBySchema() using JSON Schema after mri parsing is complete.
27
+ // This prevents silent data loss (e.g. "00123" → 123, "+1234567890" → 1234567890).
28
+ function toVal(
29
+ out: Record<string, any>,
30
+ key: string,
31
+ val: any,
32
+ opts: { string: string[]; boolean: string[]; _: string[] }
33
+ ): void {
34
+ const old = out[key]
35
+ const nxt =
36
+ !!~opts.string.indexOf(key)
37
+ ? val == null || val === true
38
+ ? ''
39
+ : String(val)
40
+ : typeof val === 'boolean'
41
+ ? val
42
+ : !!~opts.boolean.indexOf(key)
43
+ ? val === 'false'
44
+ ? false
45
+ : val === 'true' ||
46
+ (out._.push(val), !!val)
47
+ : val
48
+ out[key] = old == null ? nxt : Array.isArray(old) ? old.concat(nxt) : [old, nxt]
49
+ }
50
+
51
+ export default function mri(args?: string[], opts?: MriOptions): MriArgv {
52
+ args = args || []
53
+ opts = opts || {}
54
+
55
+ let k: string
56
+ let arr: string[]
57
+ let arg: string
58
+ let name: string
59
+ let val: any
60
+ const out: Record<string, any> = { _: [] }
61
+ let i = 0
62
+ let j = 0
63
+ let idx = 0
64
+ const len = args.length
65
+
66
+ const alibi = opts.alias !== undefined
67
+ const strict = opts.unknown !== undefined
68
+ const defaults = opts.default !== undefined
69
+
70
+ const alias: Dict<string[]> = (opts.alias as Dict<string[]>) || {}
71
+ const string = toArr(opts.string)
72
+ const boolean = toArr(opts.boolean)
73
+
74
+ const resolvedOpts = { alias, string, boolean, default: opts.default, unknown: opts.unknown, _: out._ }
75
+
76
+ if (alibi) {
77
+ for (k in alias) {
78
+ arr = alias[k] = toArr(alias[k] as Arrayable<string>)
79
+ for (i = 0; i < arr.length; i++) {
80
+ ;(alias[arr[i]] = arr.concat(k)).splice(i, 1)
81
+ }
82
+ }
83
+ }
84
+
85
+ for (i = boolean.length; i-- > 0; ) {
86
+ arr = alias[boolean[i]] || []
87
+ for (j = arr.length; j-- > 0; ) boolean.push(arr[j])
88
+ }
89
+
90
+ for (i = string.length; i-- > 0; ) {
91
+ arr = alias[string[i]] || []
92
+ for (j = arr.length; j-- > 0; ) string.push(arr[j])
93
+ }
94
+
95
+ if (defaults) {
96
+ for (k in opts.default!) {
97
+ name = typeof opts.default![k]
98
+ arr = alias[k] = alias[k] || []
99
+ if ((resolvedOpts as any)[name] !== undefined) {
100
+ ;(resolvedOpts as any)[name].push(k)
101
+ for (i = 0; i < arr.length; i++) {
102
+ ;(resolvedOpts as any)[name].push(arr[i])
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+ const keys = strict ? Object.keys(alias) : []
109
+
110
+ for (i = 0; i < len; i++) {
111
+ arg = args[i]
112
+
113
+ if (arg === '--') {
114
+ out._ = out._.concat(args.slice(++i))
115
+ break
116
+ }
117
+
118
+ for (j = 0; j < arg.length; j++) {
119
+ if (arg.charCodeAt(j) !== 45) break // "-"
120
+ }
121
+
122
+ if (j === 0) {
123
+ out._.push(arg)
124
+ } else {
125
+ for (idx = j + 1; idx < arg.length; idx++) {
126
+ if (arg.charCodeAt(idx) === 61) break // "="
127
+ }
128
+
129
+ name = arg.substring(j, idx)
130
+ val =
131
+ arg.substring(++idx) ||
132
+ (i + 1 === len ||
133
+ ('' + args[i + 1]).charCodeAt(0) === 45 ||
134
+ args[++i])
135
+ arr = j === 2 ? [name] : (name as any)
136
+
137
+ for (idx = 0; idx < arr.length; idx++) {
138
+ name = arr[idx]
139
+ if (strict && !~keys.indexOf(name))
140
+ return opts.unknown!('-'.repeat(j) + name) as any
141
+ toVal(out, name, idx + 1 < arr.length || val, resolvedOpts)
142
+ }
143
+ }
144
+ }
145
+
146
+ if (defaults) {
147
+ for (k in opts.default!) {
148
+ if (out[k] === undefined) {
149
+ out[k] = opts.default![k]
150
+ }
151
+ }
152
+ }
153
+
154
+ if (alibi) {
155
+ for (k in out) {
156
+ arr = alias[k] || []
157
+ while (arr.length > 0) {
158
+ out[arr.shift()!] = out[k]
159
+ }
160
+ }
161
+ }
162
+
163
+ return out as MriArgv
164
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "declaration": true,
7
+ "declarationMap": true,
8
+ "strict": true,
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "rootDir": "src",
12
+ "outDir": "dist"
13
+ },
14
+ "include": ["src"]
15
+ }
@@ -0,0 +1,219 @@
1
+ # Jitter Editor API Reference
2
+
3
+ Reference for `window.app` methods and layer types. For utilities, see SKILL.md and use `jitterUtils.*`.
4
+
5
+ ## App Instance Methods
6
+
7
+ ```javascript
8
+ // Playback
9
+ app.play()
10
+ app.stopPlayback()
11
+ app.moveCursor(timeInMs)
12
+
13
+ // Layer creation (opens picker or adds at cursor)
14
+ app.addArtboard()
15
+ app.addText('toolbar')
16
+ app.addRectShape('toolbar')
17
+ app.addEllipseShape('toolbar')
18
+ app.addMedia('toolbar')
19
+
20
+ // File operations
21
+ app.renameFile(newName)
22
+ app.deleteFile()
23
+ app.downloadProject()
24
+ app.scheduleSave()
25
+ ```
26
+
27
+ ## Dispatch Actions
28
+
29
+ Use `app.dispatchAction(action)` or `jitterUtils.*` helpers.
30
+
31
+ ### Core Actions
32
+
33
+ | Action Type | Purpose |
34
+ | ------------------- | ---------------------- |
35
+ | `updateObjWithUndo` | Update node properties |
36
+ | `addObjWithUndo` | Add new node |
37
+ | `removeObjWithUndo` | Remove nodes |
38
+ | `setSelection` | Select nodes |
39
+ | `emptySelection` | Clear selection |
40
+ | `undo` / `redo` | Undo/redo |
41
+ | `setCurrentTime` | Set playhead time |
42
+ | `zoomToSelection` | Zoom to selected |
43
+
44
+ ## Layer Types
45
+
46
+ ### Artboard
47
+
48
+ ```javascript
49
+ {
50
+ type: "artboard",
51
+ name: "16:9",
52
+ width: 1920,
53
+ height: 1080,
54
+ duration: 11000,
55
+ background: true,
56
+ fillColor: "#ffffff"
57
+ }
58
+ ```
59
+
60
+ ### Text
61
+
62
+ ```javascript
63
+ {
64
+ type: "text",
65
+ text: "Hello World",
66
+ fontSize: 48,
67
+ font: { name: "Poppins", type: "googlefont", weight: 600 },
68
+ fillColor: "#000000",
69
+ textAlign: "center", // "left" | "center" | "right"
70
+ verticalAlign: "middle"
71
+ }
72
+ ```
73
+
74
+ ### Image / SVG / Video / GIF
75
+
76
+ ```javascript
77
+ {
78
+ type: "image", // or "svg", "video", "gif"
79
+ url: "https://example.com/asset.jpg",
80
+ width: 400,
81
+ height: 300,
82
+ cornerRadius: 0
83
+ }
84
+ ```
85
+
86
+ ### Shapes
87
+
88
+ ```javascript
89
+ // Rectangle
90
+ { type: "rect", fillColor: "#3B82F6", cornerRadius: 8 }
91
+
92
+ // Ellipse
93
+ { type: "ellipse", fillColor: "#EF4444" }
94
+
95
+ // Star
96
+ { type: "star", fillColor: "#F59E0B", points: 5, innerRadius: 50 }
97
+ ```
98
+
99
+ ### Group
100
+
101
+ ```javascript
102
+ {
103
+ type: "layerGrp",
104
+ name: "Group Name",
105
+ clipsContent: false,
106
+ cornerRadius: 0
107
+ }
108
+ ```
109
+
110
+ ## Common Properties
111
+
112
+ All layers support:
113
+
114
+ | Property | Type | Description |
115
+ | ----------------- | ------- | ------------------- |
116
+ | `x`, `y` | number | Position |
117
+ | `width`, `height` | number | Size |
118
+ | `angle` | number | Rotation in degrees |
119
+ | `scale` | number | Scale factor |
120
+ | `opacity` | number | 0-100 |
121
+ | `shadowEnabled` | boolean | Drop shadow |
122
+ | `strokeEnabled` | boolean | Stroke/border |
123
+
124
+ ## Fill Colors
125
+
126
+ ```javascript
127
+ // Solid
128
+ fillColor: "#3B82F6"
129
+
130
+ // Linear gradient
131
+ fillColor: {
132
+ type: "GRADIENT_LINEAR",
133
+ stops: [
134
+ { id: "s1", position: 0, color: "#FF0000" },
135
+ { id: "s2", position: 1, color: "#0000FF" }
136
+ ],
137
+ transform: { angle: 0, sx: 1, tx: 0.5, ty: 0.5 }
138
+ }
139
+
140
+ // Radial gradient
141
+ fillColor: {
142
+ type: "GRADIENT_RADIAL",
143
+ stops: [...],
144
+ transform: { sx: 1, tx: 0.5, ty: 0.5 }
145
+ }
146
+ ```
147
+
148
+ ## Easing Presets
149
+
150
+ ```javascript
151
+ { name: "smooth:standard:v1", schema: "v1", config: { intensity: 50 } }
152
+ { name: "smooth:accelerate:v1", schema: "v1", config: { intensity: 50 } }
153
+ { name: "smooth:decelerate:v1", schema: "v1", config: { intensity: 50 } }
154
+ { name: "spring", schema: "v1", config: { stiffness: 100, damping: 10 } }
155
+ { name: "bounce", schema: "v1", config: { bounces: 3 } }
156
+ { name: "linear", schema: "v1", config: {} }
157
+ ```
158
+
159
+ ## Animation Types
160
+
161
+ ### Transform
162
+
163
+ `scale`, `move`, `rotate`, `opacity`
164
+
165
+ ### Enter/Exit
166
+
167
+ `fadeIn/Out`, `growIn/Out`, `shrinkIn/Out`, `slideIn/Out`, `spinIn/Out`, `blurIn/Out`, `textIn/Out`
168
+
169
+ ### Mask
170
+
171
+ `maskRevealIn/Out`, `maskSlideIn/Out`, `maskCenterIn/Out`
172
+
173
+ ### Media
174
+
175
+ `playVideo`, `playAudio`
176
+
177
+ ## Node Tree Structure
178
+
179
+ ```
180
+ Artboard (type: "artboard")
181
+ ├── LayersTree (type: "layersTree")
182
+ │ ├── LayerGrp (type: "layerGrp")
183
+ │ │ ├── Text (type: "text")
184
+ │ │ └── Image (type: "image")
185
+ │ └── SVG (type: "svg")
186
+ └── OperationsTree (type: "operationsTree")
187
+ └── OpGrp (type: "opGrp")
188
+ ├── Scale animation
189
+ └── FadeIn animation
190
+ ```
191
+
192
+ ## State Access
193
+
194
+ ```javascript
195
+ // Current selection
196
+ const state = app.props.observableEditorState.getSnapshot()
197
+ const selectedIds = state.selection.nodesIds
198
+
199
+ // Project config
200
+ const conf = app.props.observableImmutableConf.lastImmutableConf
201
+
202
+ // File metadata
203
+ const fileMeta = app.props.fileMeta
204
+ // { id, name, bucket, teamId }
205
+
206
+ // Subscribe to changes
207
+ const unsubscribe = app.props.observableImmutableConf.subscribe(() => {
208
+ // Config changed
209
+ })
210
+ ```
211
+
212
+ ## File Actions
213
+
214
+ ```javascript
215
+ await app.props.fileActions.duplicateFile(fileId) // Returns new ID
216
+ await app.props.fileActions.deleteFile(fileId)
217
+ await app.props.fileActions.renameFile(name)
218
+ await app.props.fileActions.saveFile()
219
+ ```