@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.
- package/README.md +408 -73
- package/bin/cjs-shims.js +7 -0
- package/bin/run.js +20 -2
- package/bundle/chunk-5GH4FS6C.js +12148 -0
- package/bundle/chunk-6B4I2CKP.js +231 -0
- package/bundle/chunk-6UE75KX2.js +4481 -0
- package/bundle/chunk-AU3EGGJP.js +44 -0
- package/bundle/chunk-CDQRD3JA.js +75 -0
- package/bundle/chunk-CMCEP64V.js +380 -0
- package/bundle/chunk-CW5ZHVPX.js +292 -0
- package/bundle/chunk-G6NE675D.js +238720 -0
- package/bundle/chunk-GLIYVKQA.js +48 -0
- package/bundle/chunk-KXEV6E63.js +133 -0
- package/bundle/chunk-MCRKUPJY.js +4515 -0
- package/bundle/chunk-MGM2L2T3.js +805 -0
- package/bundle/chunk-MVQYQJHI.js +502 -0
- package/bundle/chunk-NG7CZTTE.js +147 -0
- package/bundle/chunk-PU4RCSXF.js +22452 -0
- package/bundle/chunk-VXAZKB3J.js +292 -0
- package/bundle/chunk-W2L3MYN6.js +4480 -0
- package/bundle/chunk-XYJACVNA.js +231 -0
- package/bundle/commands/annotation/get.js +153 -0
- package/bundle/commands/annotation/list.js +226 -0
- package/bundle/commands/annotation/put.js +177 -0
- package/bundle/commands/auth/list.js +75 -0
- package/bundle/commands/auth/login.js +1654 -0
- package/bundle/commands/auth/logout.js +27 -0
- package/bundle/commands/auth/select.js +53 -0
- package/bundle/commands/bucket/create-credential.js +173 -0
- package/bundle/commands/bucket/delete-credential.js +140 -0
- package/bundle/commands/bucket/get-credential.js +151 -0
- package/bundle/commands/bucket/list-credentials.js +148 -0
- package/bundle/commands/build/branch.js +126 -0
- package/bundle/commands/build/checkout.js +198 -0
- package/bundle/commands/build/clone.js +153 -0
- package/bundle/commands/build/delete.js +227 -0
- package/bundle/commands/build/deploy.js +160 -0
- package/bundle/commands/build/env/get.js +105 -0
- package/bundle/commands/build/env/set.js +115 -0
- package/bundle/commands/build/find.js +333 -0
- package/bundle/commands/build/generate.js +75 -0
- package/bundle/commands/build/init.js +76 -0
- package/bundle/commands/build/list.js +11 -0
- package/bundle/commands/build/sandbox.js +65 -0
- package/bundle/commands/build/start.js +84 -0
- package/bundle/commands/build/status.js +1839 -0
- package/bundle/commands/build/stop.js +84 -0
- package/bundle/commands/build/tools/check.js +32 -0
- package/bundle/commands/build/tools/fmt.js +49 -0
- package/bundle/commands/build/unsandbox.js +65 -0
- package/bundle/commands/build/upload.js +83 -0
- package/bundle/commands/build/validate.js +71 -0
- package/bundle/commands/build/workos/delete.js +86 -0
- package/bundle/commands/build/workos/env/attach.js +134 -0
- package/bundle/commands/build/workos/env/create.js +176 -0
- package/bundle/commands/build/workos/env/delete.js +84 -0
- package/bundle/commands/build/workos/env/detach.js +115 -0
- package/bundle/commands/build/workos/env/get.js +117 -0
- package/bundle/commands/build/workos/env/list.js +139 -0
- package/bundle/commands/build/workos/env/set.js +138 -0
- package/bundle/commands/build/workos/invite.js +91 -0
- package/bundle/commands/build/workos/setup.js +124 -0
- package/bundle/commands/build/workos/status.js +93 -0
- package/bundle/commands/dns/create.js +128 -0
- package/bundle/commands/dns/delete.js +80 -0
- package/bundle/commands/dns/get.js +167 -0
- package/bundle/commands/dns/list.js +193 -0
- package/bundle/commands/dns/records/create.js +150 -0
- package/bundle/commands/dns/records/delete.js +76 -0
- package/bundle/commands/dns/records/get.js +118 -0
- package/bundle/commands/dns/records/list.js +153 -0
- package/bundle/commands/dns/records/update.js +146 -0
- package/bundle/commands/logs/query.js +237 -0
- package/bundle/commands/logs/tail.js +155 -0
- package/bundle/commands/mcp/install-claude.js +220 -0
- package/bundle/commands/mcp/install-gemini.js +220 -0
- package/bundle/commands/mcp/install-goose.js +232 -0
- package/bundle/commands/mcp/status.js +153 -0
- package/bundle/commands/object/delete.js +180 -0
- package/bundle/commands/object/get.js +209 -0
- package/bundle/commands/object/list.js +206 -0
- package/bundle/commands/object/put.js +211 -0
- package/bundle/commands/query/chunk-search.js +123 -0
- package/bundle/commands/query/document.js +126 -0
- package/bundle/commands/query/events.js +98 -0
- package/bundle/commands/query/reindex.js +147 -0
- package/bundle/commands/query/search.js +169 -0
- package/bundle/commands/tail.js +31 -0
- package/bundle/index.js +51 -0
- package/dist/base-command.d.ts +6 -0
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +14 -1
- package/dist/build.d.ts +2 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +169 -51
- package/dist/codegen.d.ts +1 -1
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +17 -3
- package/dist/codegen.test.js +44 -0
- package/dist/commands/build/checkout.d.ts.map +1 -1
- package/dist/commands/build/checkout.js +4 -0
- package/dist/commands/build/delete.d.ts.map +1 -1
- package/dist/commands/build/delete.js +6 -3
- package/dist/commands/build/deploy.d.ts.map +1 -1
- package/dist/commands/build/deploy.js +10 -2
- package/dist/commands/build/find.d.ts +1 -0
- package/dist/commands/build/find.d.ts.map +1 -1
- package/dist/commands/build/find.js +33 -2
- package/dist/commands/build/validate.d.ts.map +1 -1
- package/dist/commands/build/validate.js +0 -1
- package/dist/commands/build/workos/delete.d.ts +18 -0
- package/dist/commands/build/workos/delete.d.ts.map +1 -0
- package/dist/commands/build/workos/delete.js +72 -0
- package/dist/commands/build/workos/env/attach.d.ts +24 -0
- package/dist/commands/build/workos/env/attach.d.ts.map +1 -0
- package/dist/commands/build/workos/env/attach.js +111 -0
- package/dist/commands/build/workos/env/create.d.ts +26 -0
- package/dist/commands/build/workos/env/create.d.ts.map +1 -0
- package/dist/commands/build/workos/env/create.js +156 -0
- package/dist/commands/build/workos/env/delete.d.ts +20 -0
- package/dist/commands/build/workos/env/delete.d.ts.map +1 -0
- package/dist/commands/build/workos/env/delete.js +61 -0
- package/dist/commands/build/workos/env/detach.d.ts +21 -0
- package/dist/commands/build/workos/env/detach.d.ts.map +1 -0
- package/dist/commands/build/workos/env/detach.js +94 -0
- package/dist/commands/build/workos/env/get.d.ts +20 -0
- package/dist/commands/build/workos/env/get.d.ts.map +1 -0
- package/dist/commands/build/workos/env/get.js +94 -0
- package/dist/commands/build/workos/env/list.d.ts +18 -0
- package/dist/commands/build/workos/env/list.d.ts.map +1 -0
- package/dist/commands/build/workos/env/list.js +114 -0
- package/dist/commands/build/workos/env/set.d.ts +27 -0
- package/dist/commands/build/workos/env/set.d.ts.map +1 -0
- package/dist/commands/build/workos/env/set.js +115 -0
- package/dist/commands/build/workos/invite.d.ts +21 -0
- package/dist/commands/build/workos/invite.d.ts.map +1 -0
- package/dist/commands/build/workos/invite.js +68 -0
- package/dist/commands/build/workos/setup.d.ts +20 -0
- package/dist/commands/build/workos/setup.d.ts.map +1 -0
- package/dist/commands/build/workos/setup.js +106 -0
- package/dist/commands/build/workos/status.d.ts +18 -0
- package/dist/commands/build/workos/status.d.ts.map +1 -0
- package/dist/commands/build/workos/status.js +70 -0
- package/dist/commands/mcp/install-claude.d.ts.map +1 -1
- package/dist/commands/mcp/install-claude.js +0 -2
- package/dist/commands/mcp/install-gemini.d.ts.map +1 -1
- package/dist/commands/mcp/install-gemini.js +0 -2
- package/dist/commands/mcp/install-goose.d.ts.map +1 -1
- package/dist/commands/mcp/install-goose.js +0 -2
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +2 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/oclif.manifest.json +4286 -2208
- package/package.json +8 -5
- package/templates/claude-code/debug-raindrop-app.md +89 -0
- package/templates/claude-code/new-raindrop-app.md +10 -6
- package/templates/claude-code/reattach-raindrop-session.md +50 -12
- package/templates/claude-code/update-raindrop-app.md +61 -9
- package/templates/db/node_modules/.bin/prisma +2 -2
- package/templates/db/node_modules/.bin/prisma-kysely +2 -2
- package/templates/db/node_modules/.bin/tsc +2 -2
- package/templates/db/node_modules/.bin/tsserver +2 -2
- package/templates/db/node_modules/.bin/zx +2 -2
- package/templates/gemini-code/debug-raindrop-app.toml +86 -0
- package/templates/gemini-code/new-raindrop-app.toml +9 -5
- package/templates/gemini-code/reattach-raindrop-session.toml +9 -11
- package/templates/gemini-code/update-raindrop-app.toml +55 -10
- package/templates/goose/debug-raindrop-app.yaml +91 -0
- package/templates/goose/new-raindrop-app.yaml +12 -7
- package/templates/goose/reattach-raindrop-session.yaml +11 -4
- package/templates/goose/update-raindrop-app.yaml +57 -5
- package/templates/init/src/_app/auth.ts +18 -0
- package/templates/init/src/_app/cors.ts +64 -0
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/templates/claude-code/raindrop-guidelines.md +0 -322
- 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.
|
|
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/
|
|
38
|
-
"@liquidmetal-ai/
|
|
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": "./
|
|
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
|
-
|
|
1
|
+
allowed-tools: mcp\_\_raindrop-mcp, Write, Bash
|
|
2
|
+
description: Create a new Raindrop application from scratch
|
|
2
3
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
9
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8
|
+
After authentication, reattach to an existing Raindrop development session following these steps:
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
5.
|
|
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 = "
|
|
1
|
+
description = "Add new features to an existing Raindrop application"
|
|
2
2
|
prompt = """
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8
|
+
After authentication:
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
1. If session_id is provided in {{args}}, use it and skip to step 5
|
|
13
11
|
|
|
14
|
-
|
|
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
|
+
"""
|