@liquidmetal-ai/raindrop 0.7.0 → 0.8.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.
Files changed (178) hide show
  1. package/README.md +408 -73
  2. package/bin/cjs-shims.js +7 -0
  3. package/bin/run.js +20 -2
  4. package/bundle/chunk-5GH4FS6C.js +12148 -0
  5. package/bundle/chunk-6B4I2CKP.js +231 -0
  6. package/bundle/chunk-6UE75KX2.js +4481 -0
  7. package/bundle/chunk-AU3EGGJP.js +44 -0
  8. package/bundle/chunk-CDQRD3JA.js +75 -0
  9. package/bundle/chunk-CMCEP64V.js +380 -0
  10. package/bundle/chunk-CW5ZHVPX.js +292 -0
  11. package/bundle/chunk-G6NE675D.js +238720 -0
  12. package/bundle/chunk-GLIYVKQA.js +48 -0
  13. package/bundle/chunk-KXEV6E63.js +133 -0
  14. package/bundle/chunk-MCRKUPJY.js +4515 -0
  15. package/bundle/chunk-MGM2L2T3.js +805 -0
  16. package/bundle/chunk-MVQYQJHI.js +502 -0
  17. package/bundle/chunk-NG7CZTTE.js +147 -0
  18. package/bundle/chunk-PU4RCSXF.js +22452 -0
  19. package/bundle/chunk-VXAZKB3J.js +292 -0
  20. package/bundle/chunk-W2L3MYN6.js +4480 -0
  21. package/bundle/chunk-XYJACVNA.js +231 -0
  22. package/bundle/commands/annotation/get.js +153 -0
  23. package/bundle/commands/annotation/list.js +226 -0
  24. package/bundle/commands/annotation/put.js +177 -0
  25. package/bundle/commands/auth/list.js +75 -0
  26. package/bundle/commands/auth/login.js +1654 -0
  27. package/bundle/commands/auth/logout.js +27 -0
  28. package/bundle/commands/auth/select.js +53 -0
  29. package/bundle/commands/bucket/create-credential.js +173 -0
  30. package/bundle/commands/bucket/delete-credential.js +140 -0
  31. package/bundle/commands/bucket/get-credential.js +151 -0
  32. package/bundle/commands/bucket/list-credentials.js +148 -0
  33. package/bundle/commands/build/branch.js +126 -0
  34. package/bundle/commands/build/checkout.js +198 -0
  35. package/bundle/commands/build/clone.js +153 -0
  36. package/bundle/commands/build/delete.js +227 -0
  37. package/bundle/commands/build/deploy.js +160 -0
  38. package/bundle/commands/build/env/get.js +105 -0
  39. package/bundle/commands/build/env/set.js +115 -0
  40. package/bundle/commands/build/find.js +333 -0
  41. package/bundle/commands/build/generate.js +75 -0
  42. package/bundle/commands/build/init.js +76 -0
  43. package/bundle/commands/build/list.js +11 -0
  44. package/bundle/commands/build/sandbox.js +65 -0
  45. package/bundle/commands/build/start.js +84 -0
  46. package/bundle/commands/build/status.js +1839 -0
  47. package/bundle/commands/build/stop.js +84 -0
  48. package/bundle/commands/build/tools/check.js +32 -0
  49. package/bundle/commands/build/tools/fmt.js +49 -0
  50. package/bundle/commands/build/unsandbox.js +65 -0
  51. package/bundle/commands/build/upload.js +83 -0
  52. package/bundle/commands/build/validate.js +71 -0
  53. package/bundle/commands/build/workos/delete.js +86 -0
  54. package/bundle/commands/build/workos/env/attach.js +134 -0
  55. package/bundle/commands/build/workos/env/create.js +176 -0
  56. package/bundle/commands/build/workos/env/delete.js +84 -0
  57. package/bundle/commands/build/workos/env/detach.js +115 -0
  58. package/bundle/commands/build/workos/env/get.js +117 -0
  59. package/bundle/commands/build/workos/env/list.js +139 -0
  60. package/bundle/commands/build/workos/env/set.js +138 -0
  61. package/bundle/commands/build/workos/invite.js +91 -0
  62. package/bundle/commands/build/workos/setup.js +124 -0
  63. package/bundle/commands/build/workos/status.js +93 -0
  64. package/bundle/commands/dns/create.js +128 -0
  65. package/bundle/commands/dns/delete.js +80 -0
  66. package/bundle/commands/dns/get.js +167 -0
  67. package/bundle/commands/dns/list.js +193 -0
  68. package/bundle/commands/dns/records/create.js +150 -0
  69. package/bundle/commands/dns/records/delete.js +76 -0
  70. package/bundle/commands/dns/records/get.js +118 -0
  71. package/bundle/commands/dns/records/list.js +153 -0
  72. package/bundle/commands/dns/records/update.js +146 -0
  73. package/bundle/commands/logs/query.js +237 -0
  74. package/bundle/commands/logs/tail.js +155 -0
  75. package/bundle/commands/mcp/install-claude.js +220 -0
  76. package/bundle/commands/mcp/install-gemini.js +220 -0
  77. package/bundle/commands/mcp/install-goose.js +232 -0
  78. package/bundle/commands/mcp/status.js +153 -0
  79. package/bundle/commands/object/delete.js +180 -0
  80. package/bundle/commands/object/get.js +209 -0
  81. package/bundle/commands/object/list.js +206 -0
  82. package/bundle/commands/object/put.js +211 -0
  83. package/bundle/commands/query/chunk-search.js +123 -0
  84. package/bundle/commands/query/document.js +126 -0
  85. package/bundle/commands/query/events.js +98 -0
  86. package/bundle/commands/query/reindex.js +147 -0
  87. package/bundle/commands/query/search.js +169 -0
  88. package/bundle/commands/tail.js +31 -0
  89. package/bundle/index.js +51 -0
  90. package/dist/base-command.d.ts +6 -0
  91. package/dist/base-command.d.ts.map +1 -1
  92. package/dist/base-command.js +14 -1
  93. package/dist/build.d.ts +2 -1
  94. package/dist/build.d.ts.map +1 -1
  95. package/dist/build.js +169 -51
  96. package/dist/codegen.d.ts +1 -1
  97. package/dist/codegen.d.ts.map +1 -1
  98. package/dist/codegen.js +17 -3
  99. package/dist/codegen.test.js +44 -0
  100. package/dist/commands/build/checkout.d.ts.map +1 -1
  101. package/dist/commands/build/checkout.js +4 -0
  102. package/dist/commands/build/delete.d.ts.map +1 -1
  103. package/dist/commands/build/delete.js +6 -3
  104. package/dist/commands/build/deploy.d.ts.map +1 -1
  105. package/dist/commands/build/deploy.js +10 -2
  106. package/dist/commands/build/find.d.ts +1 -0
  107. package/dist/commands/build/find.d.ts.map +1 -1
  108. package/dist/commands/build/find.js +33 -2
  109. package/dist/commands/build/validate.d.ts.map +1 -1
  110. package/dist/commands/build/validate.js +0 -1
  111. package/dist/commands/build/workos/delete.d.ts +18 -0
  112. package/dist/commands/build/workos/delete.d.ts.map +1 -0
  113. package/dist/commands/build/workos/delete.js +72 -0
  114. package/dist/commands/build/workos/env/attach.d.ts +24 -0
  115. package/dist/commands/build/workos/env/attach.d.ts.map +1 -0
  116. package/dist/commands/build/workos/env/attach.js +111 -0
  117. package/dist/commands/build/workos/env/create.d.ts +26 -0
  118. package/dist/commands/build/workos/env/create.d.ts.map +1 -0
  119. package/dist/commands/build/workos/env/create.js +156 -0
  120. package/dist/commands/build/workos/env/delete.d.ts +20 -0
  121. package/dist/commands/build/workos/env/delete.d.ts.map +1 -0
  122. package/dist/commands/build/workos/env/delete.js +61 -0
  123. package/dist/commands/build/workos/env/detach.d.ts +21 -0
  124. package/dist/commands/build/workos/env/detach.d.ts.map +1 -0
  125. package/dist/commands/build/workos/env/detach.js +94 -0
  126. package/dist/commands/build/workos/env/get.d.ts +20 -0
  127. package/dist/commands/build/workos/env/get.d.ts.map +1 -0
  128. package/dist/commands/build/workos/env/get.js +94 -0
  129. package/dist/commands/build/workos/env/list.d.ts +18 -0
  130. package/dist/commands/build/workos/env/list.d.ts.map +1 -0
  131. package/dist/commands/build/workos/env/list.js +114 -0
  132. package/dist/commands/build/workos/env/set.d.ts +27 -0
  133. package/dist/commands/build/workos/env/set.d.ts.map +1 -0
  134. package/dist/commands/build/workos/env/set.js +115 -0
  135. package/dist/commands/build/workos/invite.d.ts +21 -0
  136. package/dist/commands/build/workos/invite.d.ts.map +1 -0
  137. package/dist/commands/build/workos/invite.js +68 -0
  138. package/dist/commands/build/workos/setup.d.ts +20 -0
  139. package/dist/commands/build/workos/setup.d.ts.map +1 -0
  140. package/dist/commands/build/workos/setup.js +106 -0
  141. package/dist/commands/build/workos/status.d.ts +18 -0
  142. package/dist/commands/build/workos/status.d.ts.map +1 -0
  143. package/dist/commands/build/workos/status.js +70 -0
  144. package/dist/commands/mcp/install-claude.d.ts.map +1 -1
  145. package/dist/commands/mcp/install-claude.js +0 -2
  146. package/dist/commands/mcp/install-gemini.d.ts.map +1 -1
  147. package/dist/commands/mcp/install-gemini.js +0 -2
  148. package/dist/commands/mcp/install-goose.d.ts.map +1 -1
  149. package/dist/commands/mcp/install-goose.js +0 -2
  150. package/dist/deploy.d.ts.map +1 -1
  151. package/dist/deploy.js +2 -2
  152. package/dist/index.d.ts +2 -0
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.js +4 -0
  155. package/oclif.manifest.json +4286 -2208
  156. package/package.json +8 -5
  157. package/templates/claude-code/debug-raindrop-app.md +89 -0
  158. package/templates/claude-code/new-raindrop-app.md +10 -6
  159. package/templates/claude-code/reattach-raindrop-session.md +50 -12
  160. package/templates/claude-code/update-raindrop-app.md +61 -9
  161. package/templates/db/node_modules/.bin/prisma +2 -2
  162. package/templates/db/node_modules/.bin/prisma-kysely +2 -2
  163. package/templates/db/node_modules/.bin/tsc +2 -2
  164. package/templates/db/node_modules/.bin/tsserver +2 -2
  165. package/templates/db/node_modules/.bin/zx +2 -2
  166. package/templates/gemini-code/debug-raindrop-app.toml +86 -0
  167. package/templates/gemini-code/new-raindrop-app.toml +9 -5
  168. package/templates/gemini-code/reattach-raindrop-session.toml +9 -11
  169. package/templates/gemini-code/update-raindrop-app.toml +55 -10
  170. package/templates/goose/debug-raindrop-app.yaml +91 -0
  171. package/templates/goose/new-raindrop-app.yaml +12 -7
  172. package/templates/goose/reattach-raindrop-session.yaml +11 -4
  173. package/templates/goose/update-raindrop-app.yaml +57 -5
  174. package/templates/init/src/_app/auth.ts +18 -0
  175. package/templates/init/src/_app/cors.ts +64 -0
  176. package/dist/tsconfig.tsbuildinfo +0 -1
  177. package/templates/claude-code/raindrop-guidelines.md +0 -322
  178. package/templates/gemini-code/raindrop-guidelines.md +0 -322
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@liquidmetal-ai/raindrop",
3
3
  "description": "CLI for the Raindrop platform",
4
- "version": "0.7.0",
4
+ "version": "0.8.0",
5
5
  "author": "bosgood",
6
6
  "bin": {
7
7
  "raindrop": "./bin/run.js"
@@ -22,7 +22,9 @@
22
22
  "changeset": "^0.2.6",
23
23
  "cli-table3": "^0.6.5",
24
24
  "date-fns": "^4.1.0",
25
+ "es-module-lexer": "^1.5.4",
25
26
  "esbuild": "^0.24.0",
27
+ "glob": "^10.0.0",
26
28
  "handlebars": "^4.7.8",
27
29
  "hcl2-json-parser": "^1.0.1",
28
30
  "npx": "^10.2.2",
@@ -34,8 +36,8 @@
34
36
  "typescript": "^5",
35
37
  "zod": "^3.23.8",
36
38
  "zx": "^8.1.9",
37
- "@liquidmetal-ai/drizzle": "0.7.0",
38
- "@liquidmetal-ai/raindrop-framework": "0.7.0"
39
+ "@liquidmetal-ai/raindrop-framework": "0.8.0",
40
+ "@liquidmetal-ai/drizzle": "0.8.0"
39
41
  },
40
42
  "devDependencies": {
41
43
  "@changesets/cli": "^2.27.9",
@@ -70,6 +72,7 @@
70
72
  "files": [
71
73
  "/bin",
72
74
  "/dist",
75
+ "/bundle",
73
76
  "/oclif.manifest.json",
74
77
  "/templates"
75
78
  ],
@@ -83,7 +86,7 @@
83
86
  "oclif": {
84
87
  "bin": "raindrop",
85
88
  "dirname": "raindrop",
86
- "commands": "./dist/commands",
89
+ "commands": "./bundle/commands",
87
90
  "plugins": [
88
91
  "@oclif/plugin-help",
89
92
  "@oclif/plugin-plugins"
@@ -111,7 +114,7 @@
111
114
  }
112
115
  },
113
116
  "scripts": {
114
- "build": "tsc -b",
117
+ "build": "node scripts/build.js && tsc -b",
115
118
  "clean": "shx rm -rf dist",
116
119
  "format": "prettier --write \"**/*.{ts,tsx,md}\"",
117
120
  "lint": "eslint . --max-warnings=0",
@@ -0,0 +1,89 @@
1
+ ---
2
+ allowed-tools: mcp__raindrop-mcp, Read, Bash, WebFetch
3
+ description: Debug an existing deployed Raindrop application
4
+ argument-hint: [session_id]
5
+ ---
6
+
7
+ WARNING: If you cannot find the "raindrop-mcp" server or the "get-prompt" tool for the "raindrop-mcp" server, respond with:
8
+ "Please check your raindrop-mcp server status by running /mcp, and reauthenticate"
9
+
10
+ Before debugging, run `raindrop auth login` to authenticate. When the command returns, authentication is complete.
11
+
12
+ After authentication:
13
+
14
+ 1. If session_id is provided as $ARGUMENTS, use it and skip to step 5
15
+
16
+ 2. Otherwise, read `~/.raindrop/index.json` to get applications and sessions:
17
+ - File format:
18
+ ```json
19
+ {
20
+ "applications": {
21
+ "my-app": {
22
+ "latest_session_id": "sess_abc123",
23
+ "sessions": [...]
24
+ }
25
+ },
26
+ "sessions": {
27
+ "sess_abc123": {
28
+ "session_id": "sess_abc123",
29
+ "timeline_id": "timeline_456",
30
+ "created_at": "...",
31
+ "current_state": "...",
32
+ "application_name": "my-app"
33
+ }
34
+ }
35
+ }
36
+ ```
37
+
38
+ 3. Handle application selection:
39
+ - If no applications exist, respond: "No Raindrop applications found. Use /new-raindrop-app to create one."
40
+ - If one application exists, use its `latest_session_id`
41
+ - If multiple applications exist:
42
+ * List all application names with their current state and last updated time
43
+ * Ask user: "Which application would you like to debug?"
44
+ * Use the selected application's `latest_session_id`
45
+
46
+ 4. If no session_id found, ask the user for it
47
+
48
+ 5. Call mcp__raindrop-mcp__get-prompt with session_id to rehydrate session context
49
+
50
+ 6. Spawn a diagnostic subagent with this prompt:
51
+ "You are debugging a deployed Raindrop application.
52
+
53
+ Session ID: [session_id from step 5]
54
+ Timeline ID: [timeline_id from step 5]
55
+ Application Name: [application_name from step 5]
56
+ Application Type: [application_type from step 5]
57
+
58
+ Your task:
59
+ 1. Ask user: 'What issues are you experiencing with your deployed application?'
60
+ 2. Gather diagnostic information:
61
+ - Run: raindrop logs [application_name] --tail 100
62
+ - Based on application_type, test endpoints/tools:
63
+ * For API: Test endpoints from interface_design
64
+ * For MCP: Test MCP tools
65
+ * For CLI: Test commands
66
+ - Record failures and error messages
67
+ 3. Aggregate test results into this format:
68
+ {
69
+ total_endpoints: X,
70
+ passing: Y,
71
+ failing: Z,
72
+ failure_details: ['endpoint/tool: error message', ...]
73
+ }
74
+ 4. Call mcp__raindrop-mcp__update-state with:
75
+ - session_id: [session_id]
76
+ - timeline_id: [timeline_id]
77
+ - artifacts: {
78
+ current_state: 'debug_analyze',
79
+ is_debugging: true,
80
+ test_results: [results from step 3]
81
+ }
82
+ - status: 'complete'
83
+ 5. Call mcp__raindrop-mcp__get-prompt with session_id
84
+ 6. Return the orchestrator_instructions from the response
85
+
86
+ Do not output messages to user beyond the initial question. Work autonomously and return orchestrator instructions."
87
+
88
+ 7. Wait for the subagent to return orchestrator_instructions
89
+ 8. The orchestrator will take over and spawn subagents for debug_analyze → debug_fix → retesting → redeployment
@@ -1,9 +1,13 @@
1
- # ~/.claude/commands/new-raindrop-app.md
1
+ allowed-tools: mcp\_\_raindrop-mcp, Write, Bash
2
+ description: Create a new Raindrop application from scratch
2
3
 
3
- Create a new Raindrop application from scratch.
4
+ WARNING: If you cannot find the "raindrop-mcp" server or the "get-prompt" tool for the "raindrop-mcp" server, respond with:
5
+ "Please check your raindrop-mcp server status by running /mcp, and reauthenticate"
4
6
 
5
- - Call the raindrop-mcp:login MCP tool to start a new development session.
6
- - Do whatever the MCP endpoint returns and continue with the flow it defines
7
+ Before starting the workflow, run `raindrop auth login` to authenticate. When the command returns, authentication is complete.
7
8
 
8
- WARNING: If you cannot find the "raindrop-mcp" server or the "login" tool for the "raindrop-mcp" server, respond with:
9
- "Please check your raindrop-mcp server status by running /mcp, and reauthenticate"
9
+ After authentication, call the mcp**raindrop-mcp**get-prompt function without any parameters to start a new development session. This will automatically create a new session and return initial workflow instructions.
10
+
11
+ The workflow will create a session cache directory at ~/.raindrop/<session_id>/ to store all artifacts and session metadata locally.
12
+
13
+ Follow the instructions returned and continue with the development workflow, using mcp**raindrop-mcp**update-state to report task completion.
@@ -1,12 +1,50 @@
1
- Reattach to an existing Raindrop development session.
2
-
3
- Steps
4
- 1. Parse the arguments
5
- - Split by whitespace to get individual values
6
- - First value = session_id (if provided)
7
- - Second value = old_timeline_id (if provided)
8
-
9
- 2. If no timeline and session ID provided check the `.raindrop.config.local.json` file to determine the last session_id and old_timeline id
10
- 3. If no input provided and no `.raindrop.config.local.json` file exists ask the user for input.
11
- 4. Call the `reattach_to_session` MCP endpoint.
12
- 5. Do whatever the MCP endpoint returns and continue with the flow it defines
1
+ ---
2
+ allowed-tools: mcp__raindrop-mcp, Read
3
+ description: Reattach to an existing Raindrop development session
4
+ argument-hint: [session_id]
5
+ ---
6
+
7
+ WARNING: If you cannot find the "raindrop-mcp" server or the "get-prompt" tool for the "raindrop-mcp" server, respond with:
8
+ "Please check your raindrop-mcp server status by running /mcp, and reauthenticate"
9
+
10
+ Before reattaching, run `raindrop auth login` to authenticate. When the command returns, authentication is complete.
11
+
12
+ After authentication:
13
+
14
+ 1. If session_id is provided as $ARGUMENTS, use it and skip to step 5
15
+
16
+ 2. Otherwise, read `~/.raindrop/index.json` to get applications and sessions:
17
+ - File format:
18
+ ```json
19
+ {
20
+ "applications": {
21
+ "my-app": {
22
+ "latest_session_id": "sess_abc123",
23
+ "sessions": [...]
24
+ }
25
+ },
26
+ "sessions": {
27
+ "sess_abc123": {
28
+ "session_id": "sess_abc123",
29
+ "timeline_id": "timeline_456",
30
+ "created_at": "...",
31
+ "current_state": "...",
32
+ "application_name": "my-app"
33
+ }
34
+ }
35
+ }
36
+ ```
37
+
38
+ 3. Handle application selection:
39
+ - If no applications exist, respond: "No Raindrop applications found. Use /new-raindrop-app to create one."
40
+ - If one application exists, use its `latest_session_id`
41
+ - If multiple applications exist:
42
+ * List all application names with their current state and last updated time
43
+ * Ask user: "Which application would you like to reattach to?"
44
+ * Use the selected application's `latest_session_id`
45
+
46
+ 4. If no session_id found, ask the user for it
47
+
48
+ 5. Call mcp__raindrop-mcp__get-prompt with the session_id parameter
49
+
50
+ 6. Follow the instructions returned and continue with the development workflow
@@ -1,11 +1,63 @@
1
- Update an existing Raindrop application with new features or changes.
1
+ ---
2
+ allowed-tools: mcp__raindrop-mcp, Read, Bash
3
+ description: Add new features to an existing Raindrop application
4
+ argument-hint: [session_id]
5
+ ---
2
6
 
3
- Steps
4
- 1. Parse the arguments
5
- - Split by whitespace to get individual values
6
- - First value = session_id (if provided)
7
- - Second value = old_timeline_id (if provided)
7
+ WARNING: If you cannot find the "raindrop-mcp" server or the "get-prompt" tool for the "raindrop-mcp" server, respond with:
8
+ "Please check your raindrop-mcp server status by running /mcp, and reauthenticate"
8
9
 
9
- 2. If no timeline and session ID provided check the `.raindrop.config.local.json` file to determine the last session_id and old_timeline id
10
- 3. If no input provided and no `.raindrop.config.local.json` file exists ask the user for input.
11
- 4. Call the `update_app_step` MCP endpoint.
10
+ Before updating, run `raindrop auth login` to authenticate. When the command returns, authentication is complete.
11
+
12
+ After authentication:
13
+
14
+ 1. If session_id is provided as $ARGUMENTS, use it and skip to step 5
15
+
16
+ 2. Otherwise, read `~/.raindrop/index.json` to get applications and sessions:
17
+ - File format:
18
+ ```json
19
+ {
20
+ "applications": {
21
+ "my-app": {
22
+ "latest_session_id": "sess_abc123",
23
+ "sessions": [...]
24
+ }
25
+ },
26
+ "sessions": {
27
+ "sess_abc123": {
28
+ "session_id": "sess_abc123",
29
+ "timeline_id": "timeline_456",
30
+ "created_at": "...",
31
+ "current_state": "...",
32
+ "application_name": "my-app"
33
+ }
34
+ }
35
+ }
36
+ ```
37
+
38
+ 3. Handle application selection:
39
+ - If no applications exist, respond: "No Raindrop applications found. Use /new-raindrop-app to create one."
40
+ - If one application exists, use its `latest_session_id`
41
+ - If multiple applications exist:
42
+ * List all application names with their current state and last updated time
43
+ * Ask user: "Which application would you like to add features to?"
44
+ * Use the selected application's `latest_session_id`
45
+
46
+ 4. If no session_id found, ask the user for it
47
+
48
+ 5. Get the timeline_id from the session entry in index.json
49
+
50
+ 6. Call mcp__raindrop-mcp__update-state with the session_id, timeline_id, and these parameters:
51
+ ```json
52
+ {
53
+ "artifacts": {
54
+ "current_state": "merge_features"
55
+ },
56
+ "status": "complete"
57
+ }
58
+ ```
59
+ This jumps the workflow to the merge_features state for adding features.
60
+
61
+ 7. Call mcp__raindrop-mcp__get-prompt with the session_id parameter
62
+
63
+ 8. Follow the instructions returned and continue with the feature addition workflow
@@ -6,9 +6,9 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules/prisma/build/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules/prisma/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules"
9
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules/prisma/build/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules/prisma/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules"
10
10
  else
11
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules/prisma/build/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules/prisma/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
11
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules/prisma/build/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules/prisma/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
12
12
  fi
13
13
  if [ -x "$basedir/node" ]; then
14
14
  exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/prisma@6.10.1_typescript@5.9.2/node_modules/prisma/build/index.js" "$@"
@@ -6,9 +6,9 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules/prisma-kysely/dist/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules/prisma-kysely/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules"
9
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules/prisma-kysely/dist/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules/prisma-kysely/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules"
10
10
  else
11
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules/prisma-kysely/dist/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules/prisma-kysely/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
11
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules/prisma-kysely/dist/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules/prisma-kysely/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/prisma-kysely@1.8.0/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
12
12
  fi
13
13
  if [ -x "$basedir/node" ]; then
14
14
  exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/prisma-kysely@1.8.0/node_modules/prisma-kysely/dist/bin.js" "$@"
@@ -6,9 +6,9 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules"
9
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules"
10
10
  else
11
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
11
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
12
12
  fi
13
13
  if [ -x "$basedir/node" ]; then
14
14
  exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/tsc" "$@"
@@ -6,9 +6,9 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules"
9
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules"
10
10
  else
11
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
11
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/typescript@5.9.2/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
12
12
  fi
13
13
  if [ -x "$basedir/node" ]; then
14
14
  exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/bin/tsserver" "$@"
@@ -6,9 +6,9 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules/zx/build/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules/zx/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules"
9
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules/zx/build/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules/zx/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules"
10
10
  else
11
- export NODE_PATH="/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules/zx/build/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules/zx/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules:/Users/mattbarto/code/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
11
+ export NODE_PATH="/Users/ian/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules/zx/build/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules/zx/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/zx@8.6.0/node_modules:/Users/ian/liquidmetal/node_modules/.pnpm/node_modules:$NODE_PATH"
12
12
  fi
13
13
  if [ -x "$basedir/node" ]; then
14
14
  exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/zx@8.6.0/node_modules/zx/build/cli.js" "$@"
@@ -0,0 +1,86 @@
1
+ description = "Debug an existing deployed Raindrop application"
2
+ prompt = """
3
+ WARNING: If you cannot find the "raindrop-mcp" server or the "get-prompt" tool for the "raindrop-mcp" server, respond with:
4
+ "Please check your raindrop-mcp server status by running /mcp, and reauthenticate"
5
+
6
+ Before debugging, run `raindrop auth login` to authenticate. When the command returns, authentication is complete.
7
+
8
+ After authentication:
9
+
10
+ 1. If session_id is provided in {{args}}, use it and skip to step 5
11
+
12
+ 2. Otherwise, read `~/.raindrop/index.json` to get applications and sessions:
13
+ - File format:
14
+ ```json
15
+ {
16
+ "applications": {
17
+ "my-app": {
18
+ "latest_session_id": "sess_abc123",
19
+ "sessions": [...]
20
+ }
21
+ },
22
+ "sessions": {
23
+ "sess_abc123": {
24
+ "session_id": "sess_abc123",
25
+ "timeline_id": "timeline_456",
26
+ "created_at": "...",
27
+ "current_state": "...",
28
+ "application_name": "my-app"
29
+ }
30
+ }
31
+ }
32
+ ```
33
+
34
+ 3. Handle application selection:
35
+ - If no applications exist, respond: "No Raindrop applications found. Use /new-raindrop-app to create one."
36
+ - If one application exists, use its `latest_session_id`
37
+ - If multiple applications exist:
38
+ * List all application names with their current state and last updated time
39
+ * Ask user: "Which application would you like to debug?"
40
+ * Use the selected application's `latest_session_id`
41
+
42
+ 4. If no session_id found, ask the user for it
43
+
44
+ 5. Call the `get-prompt` tool (from raindrop-mcp server) with session_id to rehydrate session context
45
+
46
+ 6. Spawn a diagnostic subagent with this prompt:
47
+ "You are debugging a deployed Raindrop application.
48
+
49
+ Session ID: [session_id from step 5]
50
+ Timeline ID: [timeline_id from step 5]
51
+ Application Name: [application_name from step 5]
52
+ Application Type: [application_type from step 5]
53
+
54
+ Your task:
55
+ 1. Ask user: 'What issues are you experiencing with your deployed application?'
56
+ 2. Gather diagnostic information:
57
+ - Run: raindrop logs [application_name] --tail 100
58
+ - Based on application_type, test endpoints/tools:
59
+ * For API: Test endpoints from interface_design
60
+ * For MCP: Test MCP tools
61
+ * For CLI: Test commands
62
+ - Record failures and error messages
63
+ 3. Aggregate test results into this format:
64
+ {
65
+ total_endpoints: X,
66
+ passing: Y,
67
+ failing: Z,
68
+ failure_details: ['endpoint/tool: error message', ...]
69
+ }
70
+ 4. Call the `update-state` tool (from raindrop-mcp server) with:
71
+ - session_id: [session_id]
72
+ - timeline_id: [timeline_id]
73
+ - artifacts: {
74
+ current_state: 'debug_analyze',
75
+ is_debugging: true,
76
+ test_results: [results from step 3]
77
+ }
78
+ - status: 'complete'
79
+ 5. Call the `get-prompt` tool with session_id
80
+ 6. Return the orchestrator_instructions from the response
81
+
82
+ Do not output messages to user beyond the initial question. Work autonomously and return orchestrator instructions."
83
+
84
+ 7. Wait for the subagent to return orchestrator_instructions
85
+ 8. The orchestrator will take over and spawn subagents for debug_analyze → debug_fix → retesting → redeployment
86
+ """
@@ -1,8 +1,12 @@
1
1
  description = "Create a new Raindrop application from scratch"
2
2
  prompt = """
3
- Call the raindrop-mcp:login MCP tool to start a new development session.
4
- Do whatever the MCP endpoint returns and continue with the flow it defines.
5
-
6
- WARNING: If you cannot find the "raindrop-mcp" server or the "login" tool for the "raindrop-mcp" server, respond with:
3
+ WARNING: If you cannot find the "raindrop-mcp" server or the "get-prompt" tool for the "raindrop-mcp" server, respond with:
7
4
  "Please check your raindrop-mcp server status by running /mcp, and reauthenticate"
8
- """
5
+
6
+ Before starting the workflow, run `raindrop auth login` to authenticate. When the command returns, authentication is complete.
7
+
8
+ After authentication, call the `get-prompt` tool (from the raindrop-mcp server) without any parameters to start a new development session. This will automatically create a new session and return initial workflow instructions.
9
+
10
+ Follow the instructions returned and continue with the development workflow, using `update-state` to report task completion.
11
+ """
12
+
@@ -1,17 +1,15 @@
1
1
  description = "Reattach to an existing Raindrop development session"
2
2
  prompt = """
3
- Reattach to an existing Raindrop development session following these steps:
3
+ WARNING: If you cannot find the "raindrop-mcp" server or the "get-prompt" tool for the "raindrop-mcp" server, respond with:
4
+ "Please check your raindrop-mcp server status by running /mcp, and reauthenticate"
4
5
 
5
- 1. Parse the arguments {{args}}:
6
- - Split by whitespace to get individual values
7
- - First value = session_id (if provided)
8
- - Second value = old_timeline_id (if provided)
6
+ Before reattaching, run `raindrop auth login` to authenticate. When the command returns, authentication is complete.
9
7
 
10
- 2. If no timeline and session ID provided, check the `.raindrop.config.local.json` file to determine the last session_id and old_timeline_id
8
+ After authentication, reattach to an existing Raindrop development session following these steps:
11
9
 
12
- 3. If no input provided and no `.raindrop.config.local.json` file exists, ask the user for input
13
-
14
- 4. Call the `reattach_to_session` MCP endpoint
15
-
16
- 5. Do whatever the MCP endpoint returns and continue with the flow it defines
10
+ 1. If session_id is provided in {{args}}, use it
11
+ 2. Otherwise, read `.raindrop.config.local.json` to get the last session_id
12
+ 3. If no session_id found, ask the user for it
13
+ 4. Call the `get-prompt` tool (from raindrop-mcp server) with the session_id parameter
14
+ 5. Follow the instructions returned and continue with the development workflow
17
15
  """
@@ -1,15 +1,60 @@
1
- description = "Update an existing Raindrop application with new features or changes"
1
+ description = "Add new features to an existing Raindrop application"
2
2
  prompt = """
3
- Update an existing Raindrop application following these steps:
3
+ WARNING: If you cannot find the "raindrop-mcp" server or the "get-prompt" tool for the "raindrop-mcp" server, respond with:
4
+ "Please check your raindrop-mcp server status by running /mcp, and reauthenticate"
4
5
 
5
- 1. Parse the arguments {{args}}:
6
- - Split by whitespace to get individual values
7
- - First value = session_id (if provided)
8
- - Second value = old_timeline_id (if provided)
6
+ Before updating, run `raindrop auth login` to authenticate. When the command returns, authentication is complete.
9
7
 
10
- 2. If no timeline and session ID provided, check the `.raindrop.config.local.json` file to determine the last session_id and old_timeline_id
8
+ After authentication:
11
9
 
12
- 3. If no input provided and no `.raindrop.config.local.json` file exists, ask the user for input
10
+ 1. If session_id is provided in {{args}}, use it and skip to step 5
13
11
 
14
- 4. Call the `update_app_step` MCP endpoint with the appropriate parameters
15
- """
12
+ 2. Otherwise, read `~/.raindrop/index.json` to get applications and sessions:
13
+ - File format:
14
+ ```json
15
+ {
16
+ "applications": {
17
+ "my-app": {
18
+ "latest_session_id": "sess_abc123",
19
+ "sessions": [...]
20
+ }
21
+ },
22
+ "sessions": {
23
+ "sess_abc123": {
24
+ "session_id": "sess_abc123",
25
+ "timeline_id": "timeline_456",
26
+ "created_at": "...",
27
+ "current_state": "...",
28
+ "application_name": "my-app"
29
+ }
30
+ }
31
+ }
32
+ ```
33
+
34
+ 3. Handle application selection:
35
+ - If no applications exist, respond: "No Raindrop applications found. Use /new-raindrop-app to create one."
36
+ - If one application exists, use its `latest_session_id`
37
+ - If multiple applications exist:
38
+ * List all application names with their current state and last updated time
39
+ * Ask user: "Which application would you like to add features to?"
40
+ * Use the selected application's `latest_session_id`
41
+
42
+ 4. If no session_id found, ask the user for it
43
+
44
+ 5. Get the timeline_id from the session entry in index.json
45
+
46
+ 6. Call the `update-state` tool (from raindrop-mcp server) with the session_id, timeline_id, and these parameters:
47
+ ```json
48
+ {
49
+ "artifacts": {
50
+ "current_state": "merge_features"
51
+ },
52
+ "status": "complete"
53
+ }
54
+ ```
55
+ This jumps the workflow to the merge_features state for adding features.
56
+
57
+ 7. Call the `get-prompt` tool (from raindrop-mcp server) with the session_id parameter
58
+
59
+ 8. Follow the instructions returned and continue with the feature addition workflow
60
+ """