@somacheck/vibecheck 0.6.6 → 0.6.8
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 +56 -18
- package/claude-marketplace/.claude-plugin/marketplace.json +1 -1
- package/claude-marketplace/plugins/vibecheck/.claude-plugin/plugin.json +1 -1
- package/claude-marketplace/plugins/vibecheck/hooks/hooks.json +1 -1
- package/dist/api.js +2 -1
- package/dist/client-setup.js +2 -1
- package/dist/constants.js +1 -1
- package/dist/readiness.js +2 -1
- package/dist/server.js +2 -2
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Your agent has your context. It does not have your gut. This is the bridge.
|
|
|
9
9
|
|
|
10
10
|
Fair. Here is what you need, without executing anything.
|
|
11
11
|
|
|
12
|
-
**What the `link` command does.** `npx -y @somacheck/vibecheck@0.6.
|
|
12
|
+
**What the `link` command does.** `npx -y @somacheck/vibecheck@0.6.7 link <CODE> --client <CLIENT>`
|
|
13
13
|
exchanges a short-lived pairing code, generated inside the SomaCheck iOS app, for
|
|
14
14
|
a bearer token. It writes that token to `~/.sensie/config.json` with mode `0600`,
|
|
15
15
|
offers to configure supported agent clients found on the computer, and checks the
|
|
@@ -59,18 +59,34 @@ telemetry, no analytics, no other endpoints.
|
|
|
59
59
|
**Install-time behaviour.** No `postinstall`, `preinstall`, or any other npm
|
|
60
60
|
lifecycle script. Two runtime dependencies: `@modelcontextprotocol/sdk` and `zod`.
|
|
61
61
|
|
|
62
|
-
You can verify all of the above by reading `dist/` in the installed package
|
|
63
|
-
|
|
62
|
+
You can verify all of the above by reading `dist/` in the installed package
|
|
63
|
+
without running anything.
|
|
64
64
|
|
|
65
|
-
##
|
|
65
|
+
## Choose local or hosted
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
| Path | Use it with | What you add |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| Local npm package | Claude Code or Codex | A pinned `npx` command on your computer |
|
|
70
|
+
| Hosted MCP | Claude.ai | `https://mcp.somacheck.com/functions/v1/mcp` as a custom connector |
|
|
71
|
+
|
|
72
|
+
Both paths send a consented statement and return its Aligned or Unaligned signal
|
|
73
|
+
with confidence. Raw motion data and conversation history never cross this
|
|
74
|
+
connection. Full setup and privacy details are at
|
|
75
|
+
<https://somacheck.com/docs/hosted-mcp>.
|
|
76
|
+
|
|
77
|
+
## Local setup for Claude Code or Codex
|
|
78
|
+
|
|
79
|
+
1. Install SomaCheck on iPhone from the
|
|
80
|
+
[current TestFlight invitation](https://testflight.apple.com/join/C4mAH3zz).
|
|
81
|
+
2. Open **Settings → Agent → Connect your agent**.
|
|
82
|
+
3. On the computer that will run your agent, open **Terminal** and run the command
|
|
69
83
|
shown on that screen. If you paste it into a local agent session instead of a
|
|
70
84
|
terminal, add exactly one client flag, for example `--client claude`.
|
|
71
|
-
|
|
85
|
+
4. Choose the client you want to configure when the command asks. It then checks
|
|
72
86
|
the link, backend protocol, health probes, and client registration before
|
|
73
87
|
reporting that setup is ready.
|
|
88
|
+
5. Restart the client, then ask: **Give me a SomaCheck vibecheck based on what
|
|
89
|
+
you know about me.**
|
|
74
90
|
|
|
75
91
|
For provisioning without the prompt in a terminal, append `--client codex`,
|
|
76
92
|
`--client claude`, `--client all`, or `--client none` to the `link <CODE>`
|
|
@@ -81,9 +97,9 @@ before the pairing code is redeemed.
|
|
|
81
97
|
To configure or repair a client later:
|
|
82
98
|
|
|
83
99
|
```text
|
|
84
|
-
npx -y @somacheck/vibecheck@0.6.
|
|
85
|
-
npx -y @somacheck/vibecheck@0.6.
|
|
86
|
-
npx -y @somacheck/vibecheck@0.6.
|
|
100
|
+
npx -y @somacheck/vibecheck@0.6.7 setup codex
|
|
101
|
+
npx -y @somacheck/vibecheck@0.6.7 setup claude
|
|
102
|
+
npx -y @somacheck/vibecheck@0.6.7 doctor
|
|
87
103
|
```
|
|
88
104
|
|
|
89
105
|
Manual registration remains available:
|
|
@@ -93,13 +109,13 @@ Manual registration remains available:
|
|
|
93
109
|
"mcpServers": {
|
|
94
110
|
"vibecheck": {
|
|
95
111
|
"command": "npx",
|
|
96
|
-
"args": ["-y", "@somacheck/vibecheck@0.6.
|
|
112
|
+
"args": ["-y", "@somacheck/vibecheck@0.6.7", "serve", "--client", "codex"]
|
|
97
113
|
}
|
|
98
114
|
}
|
|
99
115
|
}
|
|
100
116
|
```
|
|
101
117
|
|
|
102
|
-
For Claude Code: `claude mcp add --scope user vibecheck -- npx -y @somacheck/vibecheck@0.6.
|
|
118
|
+
For Claude Code: `claude mcp add --scope user vibecheck -- npx -y @somacheck/vibecheck@0.6.7 serve --client claude`
|
|
103
119
|
|
|
104
120
|
The link step writes only the bearer token in `~/.sensie/config.json`. The client
|
|
105
121
|
setup step asks Codex or Claude to add the pinned MCP command to that client's own
|
|
@@ -110,6 +126,24 @@ If `doctor` reports another MCP server named `somacheck`, that is the legacy
|
|
|
110
126
|
hosted connector and is separate from this local package. The setup command
|
|
111
127
|
will explain it and leave it alone. The canonical local MCP key is `vibecheck`.
|
|
112
128
|
|
|
129
|
+
## Hosted setup for Claude.ai
|
|
130
|
+
|
|
131
|
+
Claude.ai uses the hosted MCP and does not run `npx` on your computer.
|
|
132
|
+
|
|
133
|
+
1. Install SomaCheck from the
|
|
134
|
+
[current TestFlight invitation](https://testflight.apple.com/join/C4mAH3zz)
|
|
135
|
+
and open the app once.
|
|
136
|
+
2. In Claude.ai, open **Customize → Connectors**.
|
|
137
|
+
3. Select **+**, then **Add custom connector**.
|
|
138
|
+
4. Enter `https://mcp.somacheck.com/functions/v1/mcp` and select **Add**.
|
|
139
|
+
5. Complete OAuth, enable the connector in a conversation, and ask for a
|
|
140
|
+
SomaCheck vibecheck.
|
|
141
|
+
|
|
142
|
+
On Team and Enterprise plans, an Owner must add the connector in organization
|
|
143
|
+
settings before members can connect it. To revoke the hosted connection, remove
|
|
144
|
+
it from Claude.ai under **Customize → Connectors**. To revoke any agent in
|
|
145
|
+
SomaCheck, open **Settings → Agent**, select the connection, and revoke it.
|
|
146
|
+
|
|
113
147
|
## Teach your agent when to use SomaCheck
|
|
114
148
|
|
|
115
149
|
[`SKILL.md`](SKILL.md) teaches compatible agents one simple affordance:
|
|
@@ -120,24 +154,24 @@ first-person statement from available context, treat the returned gesture and
|
|
|
120
154
|
optional feedback as context rather than authorization, and never include
|
|
121
155
|
secrets or assess anyone else.
|
|
122
156
|
|
|
123
|
-
For Claude Code, add
|
|
124
|
-
one terminal command:
|
|
157
|
+
For Claude Code, add the public plugin repository as a marketplace and install
|
|
158
|
+
the skill in one terminal command:
|
|
125
159
|
|
|
126
160
|
```text
|
|
127
|
-
claude plugin marketplace add
|
|
161
|
+
claude plugin marketplace add Sensie-agents/vibecheck && claude plugin install vibecheck@somacheck
|
|
128
162
|
```
|
|
129
163
|
|
|
130
164
|
Inside Claude Code, the equivalent commands are:
|
|
131
165
|
|
|
132
166
|
```text
|
|
133
|
-
/plugin marketplace add
|
|
167
|
+
/plugin marketplace add Sensie-agents/vibecheck
|
|
134
168
|
/plugin install vibecheck@somacheck
|
|
135
169
|
```
|
|
136
170
|
|
|
137
171
|
For agents supported by the Skills CLI:
|
|
138
172
|
|
|
139
173
|
```text
|
|
140
|
-
npx skills add
|
|
174
|
+
npx skills add Sensie-agents/vibecheck --skill vibecheck
|
|
141
175
|
```
|
|
142
176
|
|
|
143
177
|
The skill expects the `@somacheck/vibecheck` MCP server to already be linked as
|
|
@@ -214,4 +248,8 @@ across local MCP clients.
|
|
|
214
248
|
|
|
215
249
|
## Support
|
|
216
250
|
|
|
217
|
-
|
|
251
|
+
Public plugin: <https://github.com/Sensie-agents/vibecheck>
|
|
252
|
+
|
|
253
|
+
Documentation: <https://somacheck.com/docs/hosted-mcp>
|
|
254
|
+
|
|
255
|
+
Contact: agents@joinsensie.com
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"name": "vibecheck",
|
|
11
11
|
"source": "./plugins/vibecheck",
|
|
12
12
|
"description": "Let Claude offer a vibecheck and continue when the phone result arrives.",
|
|
13
|
-
"version": "0.6.
|
|
13
|
+
"version": "0.6.7",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Sensie",
|
|
16
16
|
"email": "agents@joinsensie.com"
|
package/dist/api.js
CHANGED
|
@@ -348,7 +348,7 @@ export class SupabaseAgentApi {
|
|
|
348
348
|
const row = await this.#rpc("agent_link_redeem", { code });
|
|
349
349
|
return requiredString(row, "token");
|
|
350
350
|
}
|
|
351
|
-
async requestVibecheck(token, identity, statement, idempotencyKey, signal) {
|
|
351
|
+
async requestVibecheck(token, identity, statement, idempotencyKey, consentBasis, signal) {
|
|
352
352
|
if (identity.kind !== "local")
|
|
353
353
|
throw new SomaCheckLiveAskClientError();
|
|
354
354
|
const clientKey = identity.client_key;
|
|
@@ -357,6 +357,7 @@ export class SupabaseAgentApi {
|
|
|
357
357
|
statement,
|
|
358
358
|
idempotency_key: idempotencyKey,
|
|
359
359
|
client_key: clientKey,
|
|
360
|
+
consent_basis: consentBasis,
|
|
360
361
|
}, signal));
|
|
361
362
|
const lifecycle = created.status === "answered"
|
|
362
363
|
? await this.liveVibecheckResult(token, identity, created.request_id, signal)
|
package/dist/client-setup.js
CHANGED
|
@@ -145,7 +145,8 @@ function isManagedSomaCheckRegistration(client, stdout) {
|
|
|
145
145
|
|| packageArg === "@somacheck/vibecheck@0.6.2"
|
|
146
146
|
|| packageArg === "@somacheck/vibecheck@0.6.3"
|
|
147
147
|
|| packageArg === "@somacheck/vibecheck@0.6.4"
|
|
148
|
-
|| packageArg === "@somacheck/vibecheck@0.6.5"
|
|
148
|
+
|| packageArg === "@somacheck/vibecheck@0.6.5"
|
|
149
|
+
|| packageArg === "@somacheck/vibecheck@0.6.6")
|
|
149
150
|
&& args.length === 5
|
|
150
151
|
&& args[0] === "-y"
|
|
151
152
|
&& args[1] === packageArg
|
package/dist/constants.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export const SUPABASE_URL = "https://pbldcmniommltbdwuykk.supabase.co";
|
|
3
3
|
export const SUPABASE_PUBLISHABLE_KEY = "sb_publishable_af-lUNI2FqEcb-oGy-4uxQ_cnm6kY85";
|
|
4
4
|
export const PACKAGE_NAME = "@somacheck/vibecheck";
|
|
5
|
-
export const PACKAGE_VERSION = "0.6.
|
|
5
|
+
export const PACKAGE_VERSION = "0.6.7";
|
|
6
6
|
export const PACKAGE_SPEC = `${PACKAGE_NAME}@${PACKAGE_VERSION}`;
|
|
7
7
|
export const MCP_SERVER_NAME = "vibecheck";
|
|
8
8
|
export const LEGACY_HOSTED_MCP_SERVER_NAME = "somacheck";
|
package/dist/readiness.js
CHANGED
|
@@ -10,7 +10,8 @@ export async function checkReadiness(dependencies) {
|
|
|
10
10
|
}
|
|
11
11
|
catch {
|
|
12
12
|
dependencies.output("✗ This computer is not linked to SomaCheck.");
|
|
13
|
-
dependencies.output("
|
|
13
|
+
dependencies.output(" Install SomaCheck from the current TestFlight invitation: https://testflight.apple.com/join/C4mAH3zz");
|
|
14
|
+
dependencies.output(" Then open SomaCheck → Settings → Agent → Connect your agent and run the command shown there.");
|
|
14
15
|
return {
|
|
15
16
|
linked: false,
|
|
16
17
|
backendReachable: false,
|
package/dist/server.js
CHANGED
|
@@ -319,7 +319,7 @@ export function createVibecheckServer(dependencies) {
|
|
|
319
319
|
idempotentHint: true,
|
|
320
320
|
openWorldHint: false,
|
|
321
321
|
},
|
|
322
|
-
}, async ({ statement, idempotency_key }, extra) => {
|
|
322
|
+
}, async ({ statement, idempotency_key, consent_basis }, extra) => {
|
|
323
323
|
const now = dependencies.liveAskWait?.now ?? (() => performance.now());
|
|
324
324
|
const budgetMs = dependencies.liveAskWait?.budgetMs ?? LIVE_ASK_WAIT_BUDGET_MS;
|
|
325
325
|
const deadline = now() + budgetMs;
|
|
@@ -338,7 +338,7 @@ export function createVibecheckServer(dependencies) {
|
|
|
338
338
|
return liveAskFailure(new SomaCheckLiveAskClientError());
|
|
339
339
|
}
|
|
340
340
|
const token = await dependencies.loadToken();
|
|
341
|
-
const created = await dependencies.api.requestVibecheck(token, identity, statement.trim(), idempotency_key, callAbort.signal);
|
|
341
|
+
const created = await dependencies.api.requestVibecheck(token, identity, statement.trim(), idempotency_key, consent_basis, callAbort.signal);
|
|
342
342
|
const result = await waitForLiveVibecheck(created, token, identity, dependencies, callAbort.signal, deadline, (attempt) => {
|
|
343
343
|
const progressToken = extra._meta?.progressToken;
|
|
344
344
|
if (progressToken === undefined)
|
package/package.json
CHANGED