@somacheck/vibecheck 0.6.13 → 0.6.14
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 +21 -15
- package/dist/constants.js +1 -1
- package/dist/recipes.js +7 -7
- package/dist/server.js +11 -8
- package/package.json +1 -1
- package/recipes/chattermill-research-reflection.md +11 -10
- package/recipes/dovetail-research-reflection.md +2 -2
- package/recipes/great-question-research-reflection.md +5 -4
- package/recipes/maze-research-reflection.md +9 -9
- package/recipes/prolific-research-reflection.md +2 -2
- package/recipes/questionpro-research-reflection.md +6 -3
- package/recipes/typeform-research-reflection.md +3 -3
- package/recipes/user-interviews-research-reflection.md +9 -7
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ Your agent has your context. It does not have your gut. This is the bridge.
|
|
|
11
11
|
|
|
12
12
|
Fair. Here is what you need, without executing anything.
|
|
13
13
|
|
|
14
|
-
**What the `link` command does.** `npx -y @somacheck/vibecheck@0.6.
|
|
14
|
+
**What the `link` command does.** `npx -y @somacheck/vibecheck@0.6.14 link <CODE> --client <CLIENT>`
|
|
15
15
|
exchanges a short-lived pairing code, generated inside the SomaCheck iOS app, for
|
|
16
16
|
a bearer token. It writes that token to `~/.sensie/config.json` with mode `0600`,
|
|
17
17
|
offers to configure supported agent clients found on the computer, and checks the
|
|
@@ -42,8 +42,8 @@ code is not used. Non-interactive implicit selection,
|
|
|
42
42
|
|
|
43
43
|
**What the server does once running.** It exposes MCP tools that share bounded,
|
|
44
44
|
user-authorized context summaries, create a statement for the user to test,
|
|
45
|
-
read its outcome, recover recent completed gesture context, and
|
|
46
|
-
three
|
|
45
|
+
read its outcome, recover recent completed gesture context, and optionally stock
|
|
46
|
+
up to three feed items when the person asks. Version 0.6 adds `request_vibecheck` for a
|
|
47
47
|
person-approved, immediate phone check-in. That path is deliberately separate
|
|
48
48
|
from the reflection feed.
|
|
49
49
|
|
|
@@ -102,20 +102,20 @@ before the pairing code is redeemed.
|
|
|
102
102
|
To configure or repair a client later:
|
|
103
103
|
|
|
104
104
|
```text
|
|
105
|
-
npx -y @somacheck/vibecheck@0.6.
|
|
106
|
-
npx -y @somacheck/vibecheck@0.6.
|
|
107
|
-
npx -y @somacheck/vibecheck@0.6.
|
|
105
|
+
npx -y @somacheck/vibecheck@0.6.14 setup codex
|
|
106
|
+
npx -y @somacheck/vibecheck@0.6.14 setup claude
|
|
107
|
+
npx -y @somacheck/vibecheck@0.6.14 doctor
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
Manual Codex registration remains available. Its stdio runtime command is
|
|
111
|
-
`npx -y @somacheck/vibecheck@0.6.
|
|
111
|
+
`npx -y @somacheck/vibecheck@0.6.14 serve --client codex`:
|
|
112
112
|
|
|
113
113
|
```json
|
|
114
114
|
{
|
|
115
115
|
"mcpServers": {
|
|
116
116
|
"vibecheck": {
|
|
117
117
|
"command": "npx",
|
|
118
|
-
"args": ["-y", "@somacheck/vibecheck@0.6.
|
|
118
|
+
"args": ["-y", "@somacheck/vibecheck@0.6.14", "serve", "--client", "codex"]
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
}
|
|
@@ -287,9 +287,9 @@ blocked until the capability and revocation probe in the safety review passes.
|
|
|
287
287
|
| Tool | What it does |
|
|
288
288
|
|---|---|
|
|
289
289
|
| `get_vibecheck_context` | Read recent completed gestures for this exact agent link without retaining every `request_id`. |
|
|
290
|
-
| `get_vibecheck_status` | Read the
|
|
290
|
+
| `get_vibecheck_status` | Read the three-proposition database cache and its available capacity; this does not verify phone display. |
|
|
291
291
|
| `share_somacheck_context` | Share 1–20 bounded, derived, user-authorized observations; raw conversations and secrets are rejected. |
|
|
292
|
-
| `post_vibecheck_statement` |
|
|
292
|
+
| `post_vibecheck_statement` | When the person asks to stock reflections for later or has explicitly authorized scheduled stocking, add one to the reported available maximum without blocking. One may become database-current and the rest queue under Vibe Checks without extra pushes. Returns a stable `request_id` for each created row; it does not verify phone display. |
|
|
293
293
|
| `get_vibecheck_result` | Read that exact proposition once by `request_id`; returns queued, pending, or its terminal result. |
|
|
294
294
|
| `request_vibecheck` | With per-ask consent, send one immediate phone vibecheck, wait boundedly for its exact answer, and retain an opaque `live:<uuid>` fallback handle. |
|
|
295
295
|
|
|
@@ -346,20 +346,26 @@ statement with the same `idempotency_key`.
|
|
|
346
346
|
|
|
347
347
|
An immediate vibecheck is not proposition caching. It sends one person-approved statement
|
|
348
348
|
for the current choice, expires, and remains bound to its originating client.
|
|
349
|
+
Handle multiple immediate requests one at a time; do not turn the reflection feed
|
|
350
|
+
into a surrogate queue of immediate asks.
|
|
349
351
|
The reflection feed remains asynchronous and keeps its three-item cache
|
|
350
352
|
behavior. When no immediate Live Ask or delivery test has priority, one current
|
|
351
353
|
feed item may appear on Home. The other items remain visible as **Up next**
|
|
352
354
|
under **Settings → Vibe Checks** and do not generate extra notifications.
|
|
353
355
|
|
|
354
|
-
The
|
|
355
|
-
|
|
356
|
+
The database feed has capacity for three distinct insights, but capacity is not
|
|
357
|
+
a quota. Stock only the genuinely useful items the person asked to save for later,
|
|
358
|
+
from one up to the available maximum; never invent filler. SomaCheck can present
|
|
359
|
+
one at a time while other created items remain cached. After a completed gesture, the next cached insight
|
|
356
360
|
is promoted and the open slot is marked for replenishment automatically. Cached insights
|
|
357
361
|
expire sooner than a presented check-in so stale context does not masquerade as
|
|
358
362
|
a timely observation.
|
|
359
363
|
|
|
360
|
-
For a
|
|
361
|
-
|
|
362
|
-
`propositions_needed`
|
|
364
|
+
For a scheduled loop, call `get_vibecheck_context` and `get_vibecheck_status`.
|
|
365
|
+
Only when the person has asked to stock later reflections, post between one and
|
|
366
|
+
the reported `propositions_needed` maximum; it is available capacity, not a
|
|
367
|
+
required count. An explicit, still-active opt-in to scheduled stocking covers
|
|
368
|
+
later scheduled runs without asking again each time. MCP supplies the tools and durable
|
|
363
369
|
context, but it does not itself wake an idle model. Immediate event-driven runs
|
|
364
370
|
require a host webhook/agent trigger; scheduled runs provide the portable path
|
|
365
371
|
across local MCP clients.
|
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.14";
|
|
6
6
|
export const PACKAGE_SPEC = `${PACKAGE_NAME}@${PACKAGE_VERSION}`;
|
|
7
7
|
export const SOMACHECK_SETUP_URL = "https://testflight.apple.com/join/C4mAH3zz";
|
|
8
8
|
export const MCP_SERVER_NAME = "vibecheck";
|
package/dist/recipes.js
CHANGED
|
@@ -52,8 +52,8 @@ export const RECIPE_CATALOG = [
|
|
|
52
52
|
"The product or integration owner has provisioned an organization-authorized Maze connection or partner sandbox at https://connect.maze.co/mcp; running this recipe does not ask the researcher to sign up, upgrade, administer access, or populate Maze data.",
|
|
53
53
|
"The provisioned workspace supplies one named existing study with safe metadata or an aggregate summary; if it does not, the Maze half remains untested and the researcher still receives a copy-ready plan.",
|
|
54
54
|
],
|
|
55
|
-
starterPrompt: "Use Maze and SomaCheck to help me reflect on my own interpretation plan for one named Maze study. I am the researcher and I am holding the phone. The study is [STUDY NAME OR ID PROVIDED BY THE WORKSPACE OWNER]. Use only the preconfigured official hosted read-only Maze MCP at https://connect.maze.co/mcp. Read only that study's safe metadata or one aggregate summary. Do not retrieve transcripts, recordings, heatmaps, click maps, mission answers, participant identifiers, contact fields, demographic exports, free text, or row-level data. Label what Maze literally reports separately from your interpretation, then offer two defensible framings. Offer one short first-person proposition about my own interpretation plan and wait for my acceptance before any proactive SomaCheck ask. Treat Aligned or Unaligned plus confidence as context, not truth, diagnosis, authorization, or evidence about a participant. Ask what I choose in
|
|
56
|
-
successCondition: "The researcher receives at most one optional signal about their own proposition and
|
|
55
|
+
starterPrompt: "Use Maze and SomaCheck to help me reflect on my own interpretation plan for one named Maze study. I am the researcher and I am holding the phone. The study is [STUDY NAME OR ID PROVIDED BY THE WORKSPACE OWNER]. Use only the preconfigured official hosted read-only Maze MCP at https://connect.maze.co/mcp. Read only that study's safe metadata or one aggregate summary. Do not retrieve transcripts, recordings, heatmaps, click maps, mission answers, participant identifiers, contact fields, demographic exports, free text, or row-level data. Label what Maze literally reports separately from your interpretation, then offer two defensible framings. Offer one short first-person proposition about my own interpretation plan and wait for my acceptance before any proactive SomaCheck ask. Treat Aligned or Unaligned plus confidence as context, not truth, diagnosis, authorization, or evidence about a participant. Ask what I choose and accept any explicit response available in this interface. Keep the proposition, reading, confidence, and confirmation out of Maze. Do not create, edit, publish, delete, archive, export, share, tag, comment, or otherwise write to Maze. If the preconfigured connection or a safe runtime read is absent, label the Maze half untested, return a copy-ready interpretation plan, and tell the integration owner what capability is missing. Do not ask me to sign up, upgrade, administer access, or populate Maze data.",
|
|
56
|
+
successCondition: "The researcher receives at most one optional signal about their own proposition and explicitly indicates their choice after a real metadata or aggregate read from a preconfigured workspace; no participant data or SomaCheck output enters Maze, and the Maze workspace remains unchanged.",
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
id: "chattermill-research-reflection-v1",
|
|
@@ -66,8 +66,8 @@ export const RECIPE_CATALOG = [
|
|
|
66
66
|
"The product or integration owner has provisioned an organization-authorized Chattermill connection or partner sandbox at https://app.chattermill.com/mcp with mcp:read; running this recipe does not ask the researcher to sign up, purchase access, administer access, or populate Chattermill data.",
|
|
67
67
|
"The provisioned workspace supplies one named existing project for which get_metrics or generate_highlights is sufficient; get_feedback, search_observations, identifier-bearing attributes, and free text remain prohibited.",
|
|
68
68
|
],
|
|
69
|
-
starterPrompt: "Use Chattermill and SomaCheck to help me reflect on my own interpretation of one named project's customer-feedback insights. I am the researcher and I am holding the phone. The project is [PROJECT NAME OR ID PROVIDED BY THE WORKSPACE OWNER]. Use only the preconfigured official hosted read-only Chattermill MCP at https://app.chattermill.com/mcp. Read only aggregate metrics with get_metrics or generated highlights with generate_highlights, plus the minimum discovery metadata needed to build that query. Never call get_feedback or search_observations, enumerate identifier-bearing attributes, or surface individual feedback, source quotes, respondent identifiers, contact fields, or free text. Label what the aggregate output literally reports separately from your interpretation, then offer two defensible interpretations. Offer one short first-person proposition about my own interpretation or next step and wait for my acceptance before any proactive SomaCheck ask. Treat Aligned or Unaligned plus confidence as context, not truth, diagnosis, authorization, or evidence about an individual customer. Ask what I choose in
|
|
70
|
-
successCondition: "The researcher receives at most one optional signal about their own proposition and
|
|
69
|
+
starterPrompt: "Use Chattermill and SomaCheck to help me reflect on my own interpretation of one named project's customer-feedback insights. I am the researcher and I am holding the phone. The project is [PROJECT NAME OR ID PROVIDED BY THE WORKSPACE OWNER]. Use only the preconfigured official hosted read-only Chattermill MCP at https://app.chattermill.com/mcp. Read only aggregate metrics with get_metrics or generated highlights with generate_highlights, plus the minimum discovery metadata needed to build that query. Never call get_feedback or search_observations, enumerate identifier-bearing attributes, or surface individual feedback, source quotes, respondent identifiers, contact fields, or free text. Label what the aggregate output literally reports separately from your interpretation, then offer two defensible interpretations. Offer one short first-person proposition about my own interpretation or next step and wait for my acceptance before any proactive SomaCheck ask. Treat Aligned or Unaligned plus confidence as context, not truth, diagnosis, authorization, or evidence about an individual customer. Ask what I choose and accept any explicit response available in this interface. Keep the proposition, reading, confidence, and confirmation out of Chattermill. Do not create, edit, publish, delete, share, export, tag, comment, or otherwise write to Chattermill. If the preconfigured connection, mcp:read, or a safe aggregate runtime tool is absent, label the Chattermill half untested, return a copy-ready interpretation, and tell the integration owner what capability is missing. Do not ask me to sign up, purchase access, administer access, or populate Chattermill data.",
|
|
70
|
+
successCondition: "The researcher receives at most one optional signal about their own proposition and explicitly indicates their choice after a real aggregate or generated-summary read from a preconfigured workspace; no individual feedback or SomaCheck output enters the cross-MCP flow, and Chattermill remains unchanged.",
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
id: "user-interviews-research-reflection-v1",
|
|
@@ -80,8 +80,8 @@ export const RECIPE_CATALOG = [
|
|
|
80
80
|
"The planning workflow requires no User Interviews account or connector because it calls no platform data or action tool.",
|
|
81
81
|
"For partner integration validation only, the product or integration owner may supply a preconfigured partner sandbox whose runtime capability list can be inspected without invoking a project, recruitment, participant-data, contact, publication, or spend tool; the researcher is never asked to request access or populate platform data.",
|
|
82
82
|
],
|
|
83
|
-
starterPrompt: "Use User Interviews and SomaCheck to help me prepare one clearly named, participant-free test-project plan without changing User Interviews. I am the researcher and I am holding the phone. The study idea is [STUDY IDEA]. Work only from what I provide here. If a product or integration owner has supplied a preconfigured official User Interviews partner sandbox, you may inspect its capability names and schemas, but do not call any platform data or action tool. The planning workflow does not require me to sign up, request access, purchase a plan, or populate User Interviews data. Do not retrieve candidates, participants, screeners, responses, profiles, identifiers, messages, recordings, transcripts, session data, or other workspace data. Propose two neutral study framings and show the exact signal-free project copy. Then offer one short first-person proposition about my own preferred direction and wait for my acceptance before any proactive SomaCheck ask. Treat Aligned or Unaligned plus confidence as context, not truth, diagnosis, authorization, or evidence about another person. Ask what I choose in
|
|
84
|
-
successCondition: "The researcher receives at most one optional signal about their own proposition and
|
|
83
|
+
starterPrompt: "Use User Interviews and SomaCheck to help me prepare one clearly named, participant-free test-project plan without changing User Interviews. I am the researcher and I am holding the phone. The study idea is [STUDY IDEA]. Work only from what I provide here. If a product or integration owner has supplied a preconfigured official User Interviews partner sandbox, you may inspect its capability names and schemas, but do not call any platform data or action tool. The planning workflow does not require me to sign up, request access, purchase a plan, or populate User Interviews data. Do not retrieve candidates, participants, screeners, responses, profiles, identifiers, messages, recordings, transcripts, session data, or other workspace data. Propose two neutral study framings and show the exact signal-free project copy. Then offer one short first-person proposition about my own preferred direction and wait for my acceptance before any proactive SomaCheck ask. Treat Aligned or Unaligned plus confidence as context, not truth, diagnosis, authorization, or evidence about another person. Ask what I choose and accept any explicit response available in this interface. Keep the proposition, reading, confidence, and confirmation out of User Interviews. Return a copy-ready project payload only. Do not create, edit, recruit, invite, message, schedule, screen, launch, publish, attach incentives, spend, read participant data, or call a broader or undocumented tool.",
|
|
84
|
+
successCondition: "The researcher receives at most one optional signal about their own proposition and explicitly indicates their choice; the agent returns a copy-ready signal-free test-project plan, invokes no User Interviews data or action tool, and performs no recruitment, participant read, contact, mutation, launch, publication, incentive, payment, or spend.",
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
87
|
id: "sprig-research-reflection-v1",
|
|
@@ -108,7 +108,7 @@ export const RECIPE_CATALOG = [
|
|
|
108
108
|
"The product or integration owner has provisioned an organization-authorized Great Question connection or partner sandbox at https://greatquestion.co/api/mcp/v1 with PII hiding enabled; running this recipe does not ask the researcher to sign up, upgrade, purchase, administer access, or populate Great Question data.",
|
|
109
109
|
"The owner supplies one participant-free test study, and the client restricts the platform half to get_survey_study for that exact artifact; no discovery or mutation tool is approved.",
|
|
110
110
|
],
|
|
111
|
-
starterPrompt: "Use Great Question and SomaCheck to help me reflect on a five-question test survey plan without changing Great Question. I am the researcher and I am holding the phone. The product or integration owner has provisioned a partner sandbox and named this participant-free test study: [TEST STUDY NAME OR ID]. Read only that study's safe title, purpose, and question structure with get_survey_study. Do not search or list the workspace, and do not read candidates, participants, screeners, responses, sessions, transcripts, recordings, highlights, insights, reels, or other workspace data. Propose two neutral study framings and show their exact questions. Then offer one short first-person proposition about my own preferred framing and wait for my acceptance before any proactive SomaCheck ask. Give the agent the Aligned or Unaligned result plus confidence as context and let it use that context with its judgment. Ask what I choose in
|
|
111
|
+
starterPrompt: "Use Great Question and SomaCheck to help me reflect on a five-question test survey plan without changing Great Question. I am the researcher and I am holding the phone. The product or integration owner has provisioned a partner sandbox and named this participant-free test study: [TEST STUDY NAME OR ID]. Read only that study's safe title, purpose, and question structure with get_survey_study. Do not search or list the workspace, and do not read candidates, participants, screeners, responses, sessions, transcripts, recordings, highlights, insights, reels, or other workspace data. Propose two neutral study framings and show their exact questions. Then offer one short first-person proposition about my own preferred framing and wait for my acceptance before any proactive SomaCheck ask. Give the agent the Aligned or Unaligned result plus confidence as context and let it use that context with its judgment. Ask what I choose and accept any explicit response available in this interface. Keep the proposition, reading, confidence, and my confirmation out of Great Question. Return a signal-free, copy-ready research plan only. Do not create, update, delete, recruit, invite, message, schedule, incentivize, launch, publish, or otherwise write to Great Question. Do not ask me to sign up, upgrade, purchase, administer access, or populate Great Question data.",
|
|
112
112
|
successCondition: "The researcher receives at most one optional signal, states a choice, and receives a copy-ready five-question plan; only get_survey_study reads the exact owner-supplied test artifact, Great Question remains unchanged, and no recruitment or participant data is accessed.",
|
|
113
113
|
},
|
|
114
114
|
{
|
package/dist/server.js
CHANGED
|
@@ -132,7 +132,7 @@ const SERVER_INSTRUCTIONS = [
|
|
|
132
132
|
"SomaCheck lets you ask your person for a vibecheck.",
|
|
133
133
|
"Offer one when useful or when asked.",
|
|
134
134
|
"When asked, choose and send a useful first-person statement from available context.",
|
|
135
|
-
"Only request_vibecheck creates an immediate phone ask
|
|
135
|
+
"Only request_vibecheck creates an immediate phone ask, one at a time; use post_vibecheck_statement only when the person asks to stock reflections for later.",
|
|
136
136
|
"Gesture and optional feedback are context, not authorization.",
|
|
137
137
|
"Never infer the SomaCheck identity from the agent login.",
|
|
138
138
|
"Use your judgment.",
|
|
@@ -197,7 +197,7 @@ export function createVibecheckServer(dependencies) {
|
|
|
197
197
|
});
|
|
198
198
|
server.registerTool("get_vibecheck_status", {
|
|
199
199
|
title: "Vibecheck Status",
|
|
200
|
-
description: "Read the
|
|
200
|
+
description: "Read the SomaCheck database feed before posting. Reports available proposition capacity, when routine replenishment is due, and whether this is the agent's first contact. Database state does not verify phone display.",
|
|
201
201
|
inputSchema: {},
|
|
202
202
|
outputSchema: statusSchema,
|
|
203
203
|
annotations: {
|
|
@@ -255,7 +255,7 @@ export function createVibecheckServer(dependencies) {
|
|
|
255
255
|
});
|
|
256
256
|
server.registerTool("post_vibecheck_statement", {
|
|
257
257
|
title: "Post Vibecheck Statement",
|
|
258
|
-
description: "
|
|
258
|
+
description: "When the person asks to stock reflections for later, or has explicitly authorized scheduled stocking, add one to three optional personalized reflections under Settings → Vibe Checks and return immediately. One can become database-current for Home; the rest stay Up next without extra pushes. This does not verify phone display or delivery. Never call this to add follow-up asks after request_vibecheck. Call get_vibecheck_status first; propositions_needed is the available maximum, not a quota. Submit only genuinely useful statements and never invent extras to fill capacity. A still-active scheduled authorization does not require repeated consent each run.",
|
|
259
259
|
inputSchema: {
|
|
260
260
|
statements: z.array(z.string().min(1)).min(1).max(3)
|
|
261
261
|
.describe("Distinct personalized statements for this person to test, ordered most useful first."),
|
|
@@ -276,14 +276,14 @@ export function createVibecheckServer(dependencies) {
|
|
|
276
276
|
return {
|
|
277
277
|
content: [{
|
|
278
278
|
type: "text",
|
|
279
|
-
text: `Added ${created.length} under Settings → Vibe Checks: ${presented} current, ${queued}
|
|
279
|
+
text: `Added ${created.length} under Settings → Vibe Checks: ${presented} database-current, ${queued} queued. This is asynchronous feed inventory, not verified phone display or an immediate request.`,
|
|
280
280
|
}],
|
|
281
281
|
structuredContent: { propositions: created },
|
|
282
282
|
};
|
|
283
283
|
}
|
|
284
284
|
catch (error) {
|
|
285
285
|
return failure(error instanceof StatementPendingError
|
|
286
|
-
? "
|
|
286
|
+
? "The database feed cannot accept those propositions within its available capacity. Check status again after a check-in, refresh, or expiry."
|
|
287
287
|
: operationalFailureText("add SomaCheck propositions", error));
|
|
288
288
|
}
|
|
289
289
|
});
|
|
@@ -615,16 +615,19 @@ async function waitForLiveVibecheck(created, token, identity, dependencies, sign
|
|
|
615
615
|
}
|
|
616
616
|
function summarise(status) {
|
|
617
617
|
const cadence = status.cadence;
|
|
618
|
+
if (status.propositions_needed <= 0) {
|
|
619
|
+
return `This connection's database feed has no available slots; ${status.queued_proposition_count} propositions are queued. Do not post another feed item. This status does not verify phone display. Routine replenishment uses a ${formatDuration(cadence.followup_within_seconds)} floor.`;
|
|
620
|
+
}
|
|
618
621
|
if (status.first_run_intro.should_offer_now) {
|
|
619
|
-
return `This is your first contact. Introduce the SomaCheck ritual,
|
|
622
|
+
return `This is your first contact. Introduce the SomaCheck ritual. The feed has up to ${status.propositions_needed} available slot${status.propositions_needed === 1 ? "" : "s"}; only if the person asks to stock reflections for later or has explicitly authorized scheduled stocking, add 1 to ${status.propositions_needed} genuinely useful proposition${status.propositions_needed === 1 ? "" : "s"}. Never invent extras to fill capacity.`;
|
|
620
623
|
}
|
|
621
624
|
if (status.propositions_needed > 0) {
|
|
622
625
|
const requested = status.replenishment_requested_at === null
|
|
623
626
|
? ""
|
|
624
627
|
: ` The person requested replenishment at ${status.replenishment_requested_at}.`;
|
|
625
|
-
return `The
|
|
628
|
+
return `The database feed has ${status.pending_proposition_count} of 3 propositions and up to ${status.propositions_needed} available slot${status.propositions_needed === 1 ? "" : "s"}. Only if the person asks to stock reflections for later or has explicitly authorized scheduled stocking, add 1 to ${status.propositions_needed} genuinely useful proposition${status.propositions_needed === 1 ? "" : "s"}; never invent extras to fill capacity. A still-active scheduled authorization does not require repeated consent each run. This status does not verify phone display.${requested}`;
|
|
626
629
|
}
|
|
627
|
-
return
|
|
630
|
+
return "Feed capacity is unavailable. Do not post another feed item until status can be confirmed.";
|
|
628
631
|
}
|
|
629
632
|
function formatDuration(seconds) {
|
|
630
633
|
const hours = seconds / 3600;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@somacheck/vibecheck",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.14",
|
|
4
4
|
"mcpName": "io.github.Sensie-agents/vibecheck",
|
|
5
5
|
"description": "Body language for AI agents, on your terms. A consented SomaCheck signal for how a thought or choice lands.",
|
|
6
6
|
"repository": {
|
|
@@ -77,8 +77,8 @@ or `search_observations` (observation identifiers and representative verbatim
|
|
|
77
77
|
snippets), and never surfaces individual feedback, source quotes, respondent
|
|
78
78
|
identifiers, or free text. The agent offers two defensible interpretations of
|
|
79
79
|
what the aggregate signal suggests, then one short first-person proposition
|
|
80
|
-
about the researcher's own interpretation or next step. After the researcher
|
|
81
|
-
|
|
80
|
+
about the researcher's own interpretation or next step. After the researcher
|
|
81
|
+
explicitly indicates a choice, the agent stops. There is no Chattermill write.
|
|
82
82
|
|
|
83
83
|
## Starter prompt
|
|
84
84
|
|
|
@@ -98,7 +98,8 @@ aggregate signal suggests, with the tradeoff for each. Then offer one short
|
|
|
98
98
|
first-person proposition about my own interpretation or next step and wait
|
|
99
99
|
for my acceptance before any proactive SomaCheck ask. Treat Aligned or
|
|
100
100
|
Unaligned plus confidence as context, not truth, diagnosis, authorization, or
|
|
101
|
-
evidence about any individual customer. Ask what I choose
|
|
101
|
+
evidence about any individual customer. Ask what I choose and accept any
|
|
102
|
+
explicit response available in this interface. Keep the
|
|
102
103
|
proposition, reading, confidence, and my confirmation out of Chattermill. Do
|
|
103
104
|
not write to Chattermill; the hosted MCP is read-only. If the preconfigured
|
|
104
105
|
connection, mcp:read, or a safe aggregate tool is absent, return the copy-ready
|
|
@@ -198,9 +199,9 @@ recipe work. If the runtime does not expose `get_metrics` or
|
|
|
198
199
|
researcher decides). `unaligned` may indicate possible inner conflict
|
|
199
200
|
relative to the proposition; it does not name a cause, choose an
|
|
200
201
|
interpretation, or justify a research claim.
|
|
201
|
-
11. **
|
|
202
|
-
whether they want a third option, or whether they want to stop.
|
|
203
|
-
their
|
|
202
|
+
11. **Return authority.** Ask the researcher which interpretation they choose,
|
|
203
|
+
whether they want a third option, or whether they want to stop. Accept any
|
|
204
|
+
explicit response available in the interface and follow their choice.
|
|
204
205
|
12. **Keep the signal out of Chattermill.** Do not call any write, mutation,
|
|
205
206
|
export, tag, theme, highlight, insight, or analytics tool. Do not store
|
|
206
207
|
the proposition, reading, confidence, confirmation, or gesture metadata
|
|
@@ -246,8 +247,8 @@ The test passes when:
|
|
|
246
247
|
- the researcher receives at most one optional SomaCheck check-in on their
|
|
247
248
|
phone on an exact first-person proposition about their own interpretation or
|
|
248
249
|
next step;
|
|
249
|
-
- the agent presents the result as context, asks the researcher to
|
|
250
|
-
choice
|
|
250
|
+
- the agent presents the result as context, asks the researcher to indicate
|
|
251
|
+
their choice explicitly, and follows that choice;
|
|
251
252
|
- the agent makes no Chattermill write, mutation, export, share, tag,
|
|
252
253
|
comment, or analytics call; and
|
|
253
254
|
- no individual customer, respondent, or employee data enters the cross-MCP
|
|
@@ -271,7 +272,7 @@ The test passes when:
|
|
|
271
272
|
then proceed without a reading if still unresolved.
|
|
272
273
|
- **Unreadable capture:** Offer a retry only if the researcher wants it;
|
|
273
274
|
unreadable is not a third interpretation.
|
|
274
|
-
- **Researcher disagrees with the reading:** Follow the researcher's
|
|
275
|
+
- **Researcher disagrees with the reading:** Follow the researcher's explicit
|
|
275
276
|
choice without reconciliation or repetition.
|
|
276
277
|
|
|
277
278
|
## Privacy boundary
|
|
@@ -306,7 +307,7 @@ The test passes when:
|
|
|
306
307
|
- [ ] The proposition is first-person and contains no Chattermill content.
|
|
307
308
|
- [ ] At most one SomaCheck request is created for the choice.
|
|
308
309
|
- [ ] Observation, interpretation, confirmation, and choice remain separate.
|
|
309
|
-
- [ ] The researcher
|
|
310
|
+
- [ ] The researcher explicitly indicates a choice and the agent follows it.
|
|
310
311
|
- [ ] The agent makes no Chattermill write, mutation, export, share, tag,
|
|
311
312
|
comment, or analytics call.
|
|
312
313
|
- [ ] No individual customer, respondent, or employee data enters the
|
|
@@ -115,7 +115,7 @@ makes the reading an automatic write condition.
|
|
|
115
115
|
`pending`, is `expired` or `cancelled`, or errors, continue without a result;
|
|
116
116
|
do not infer one or start another request.
|
|
117
117
|
8. **Return authority.** Offer the options to revise, investigate, proceed,
|
|
118
|
-
pause, or leave the artifact unchanged.
|
|
118
|
+
pause, or leave the artifact unchanged. An explicit researcher choice overrides
|
|
119
119
|
the signal.
|
|
120
120
|
9. **Keep the signal private.** Do not write the verdict, confidence, gesture,
|
|
121
121
|
or confirmation to Dovetail. If the researcher asks to record a next step,
|
|
@@ -153,7 +153,7 @@ Do not trigger when:
|
|
|
153
153
|
- the task is ordinary Dovetail retrieval, summarization, tagging, or export;
|
|
154
154
|
- the proposed subject is anyone other than the researcher;
|
|
155
155
|
- the source contains raw or identifiable participant material;
|
|
156
|
-
- the researcher has already made a clear
|
|
156
|
+
- the researcher has already made a clear choice;
|
|
157
157
|
- the result would determine inclusion, quality, compensation, performance, or
|
|
158
158
|
another consequential outcome; or
|
|
159
159
|
- a vibecheck was already used for the same decision.
|
|
@@ -48,7 +48,8 @@ neutral study framings and show their exact questions. Then offer one short
|
|
|
48
48
|
first-person proposition about my own preferred framing and wait for my
|
|
49
49
|
acceptance before any proactive SomaCheck ask. Give the agent the Aligned or
|
|
50
50
|
Unaligned result plus confidence as context and let it use that context with
|
|
51
|
-
its judgment. Ask what I choose
|
|
51
|
+
its judgment. Ask what I choose and accept any explicit response available in
|
|
52
|
+
this interface. Keep the proposition, reading,
|
|
52
53
|
confidence, and my confirmation out of Great Question. Return a signal-free,
|
|
53
54
|
copy-ready research plan only. Do not create, update, delete, recruit, invite,
|
|
54
55
|
message, schedule, incentivize, launch, publish, or otherwise write to Great
|
|
@@ -119,8 +120,8 @@ owner-supplied artifact.
|
|
|
119
120
|
or Unaligned reading, and confidence. Let it combine that context with the
|
|
120
121
|
conversation and its judgment. Keep observation, interpretation,
|
|
121
122
|
confirmation, and choice distinct.
|
|
122
|
-
9. **Ask the researcher to
|
|
123
|
-
follows and may differ from the signal.
|
|
123
|
+
9. **Return authority.** Ask the researcher to indicate their choice explicitly.
|
|
124
|
+
Their choice controls what follows and may differ from the signal.
|
|
124
125
|
10. **Return a copy-ready plan.** Include only a test title, goal/purpose,
|
|
125
126
|
language, and the five questions. Do not attach an incentive, consent form,
|
|
126
127
|
screener, candidates, recruitment settings, or send settings.
|
|
@@ -169,7 +170,7 @@ The end-to-end test passes only when:
|
|
|
169
170
|
- **SomaCheck unresolved:** Use the same handle once later, then proceed without
|
|
170
171
|
a reading if unresolved.
|
|
171
172
|
- **Unreadable capture:** Offer a retry only if the researcher wants it.
|
|
172
|
-
- **The researcher's
|
|
173
|
+
- **The researcher's choice differs from the reading:** Follow their explicit choice
|
|
173
174
|
without reconciliation or repetition.
|
|
174
175
|
|
|
175
176
|
## Privacy boundary
|
|
@@ -73,7 +73,7 @@ summary (mission completion rates, time on task, success-rate aggregate,
|
|
|
73
73
|
summary counts). It does not open transcripts, response rows, participant
|
|
74
74
|
identifiers, recordings, or free-text fields. The agent offers two defensible
|
|
75
75
|
interpretation framings and one short first-person proposition about the
|
|
76
|
-
researcher's own interpretation plan. After the researcher
|
|
76
|
+
researcher's own interpretation plan. After the researcher explicitly indicates a choice,
|
|
77
77
|
the agent stops. There is no Maze write.
|
|
78
78
|
|
|
79
79
|
## Starter prompt
|
|
@@ -94,7 +94,8 @@ defensible interpretation framings. Then offer one short first-person
|
|
|
94
94
|
proposition about my own interpretation plan and wait for my acceptance
|
|
95
95
|
before any proactive SomaCheck ask. Treat Aligned or Unaligned plus
|
|
96
96
|
confidence as context, not truth, diagnosis, authorization, or evidence
|
|
97
|
-
about a Maze participant. Ask what I choose
|
|
97
|
+
about a Maze participant. Ask what I choose and accept any explicit response
|
|
98
|
+
available in this interface. Keep the
|
|
98
99
|
proposition, reading, confidence, and my confirmation out of Maze. Do
|
|
99
100
|
not create, edit, publish, delete, archive, export, share, tag, comment,
|
|
100
101
|
or write to Maze, a hidden field, a webhook, or any analytics record.
|
|
@@ -192,8 +193,8 @@ read, label the Maze half untested and stop.
|
|
|
192
193
|
decides). `unaligned` may indicate possible inner conflict relative
|
|
193
194
|
to the proposition; it does not name a cause, choose an interpretation,
|
|
194
195
|
or justify a research claim.
|
|
195
|
-
11. **
|
|
196
|
-
want a third option, or whether they want to stop. Follow their
|
|
196
|
+
11. **Return authority.** Ask the researcher which framing they choose, whether they
|
|
197
|
+
want a third option, or whether they want to stop. Follow their explicit
|
|
197
198
|
choice.
|
|
198
199
|
12. **Keep the signal out of Maze.** Do not call any Maze write, mutation,
|
|
199
200
|
export, webhook, comment, tag, highlight, insight, analytics, or
|
|
@@ -241,8 +242,8 @@ The test passes when:
|
|
|
241
242
|
theme, highlight, insight, automation, or write tool;
|
|
242
243
|
- the researcher receives at most one optional SomaCheck check-in on their phone
|
|
243
244
|
on an exact first-person proposition about their own interpretation plan;
|
|
244
|
-
- the agent presents the result as context, asks the researcher to
|
|
245
|
-
choice
|
|
245
|
+
- the agent presents the result as context, asks the researcher to indicate
|
|
246
|
+
their choice explicitly, and follows that choice;
|
|
246
247
|
- the agent makes no Maze write, mutation, export, share, tag,
|
|
247
248
|
comment, or analytics call; and
|
|
248
249
|
- no Maze participant, respondent, or employee data enters the
|
|
@@ -271,7 +272,7 @@ The test passes when:
|
|
|
271
272
|
later, then proceed without a reading if still unresolved.
|
|
272
273
|
- **Unreadable capture:** Offer a retry only if the researcher wants it;
|
|
273
274
|
unreadable is not a third interpretation.
|
|
274
|
-
- **Researcher disagrees with the reading:** Follow the researcher's
|
|
275
|
+
- **Researcher disagrees with the reading:** Follow the researcher's explicit choice
|
|
275
276
|
without reconciliation or repetition.
|
|
276
277
|
|
|
277
278
|
## Privacy boundary
|
|
@@ -308,8 +309,7 @@ The test passes when:
|
|
|
308
309
|
- [ ] At most one SomaCheck request is created for the choice.
|
|
309
310
|
- [ ] Observation, interpretation, confirmation, and choice remain
|
|
310
311
|
separate.
|
|
311
|
-
- [ ] The researcher
|
|
312
|
-
choice.
|
|
312
|
+
- [ ] The researcher explicitly indicates a choice and the agent follows it.
|
|
313
313
|
- [ ] The agent makes no Maze mutation, write, export, share, tag,
|
|
314
314
|
comment, or analytics call.
|
|
315
315
|
- [ ] No Maze participant, respondent, or employee data enters the
|
|
@@ -124,7 +124,7 @@ automatic decision gate.
|
|
|
124
124
|
proceed to separate review, pause, or leave unchanged. Do not call
|
|
125
125
|
`create_filter_set`, `create_study`, or `publish_study`. If the researcher
|
|
126
126
|
chooses a change, produce a reviewable draft outside Prolific; platform
|
|
127
|
-
mutation is a new action requiring explicit instruction.
|
|
127
|
+
mutation is a new action requiring explicit instruction. An explicit researcher
|
|
128
128
|
choice overrides the signal.
|
|
129
129
|
10. **Keep the signal private.** Do not write the verdict, confidence, gesture,
|
|
130
130
|
confirmation, or inferred meaning to Prolific or another research platform.
|
|
@@ -161,7 +161,7 @@ Do not trigger when:
|
|
|
161
161
|
- the proposed subject is a participant, employee, cohort, or respondent;
|
|
162
162
|
- the result would affect eligibility, filtering, payment, bonus, rejection,
|
|
163
163
|
submission quality, authenticity, or performance;
|
|
164
|
-
- the researcher has already made a clear
|
|
164
|
+
- the researcher has already made a clear choice;
|
|
165
165
|
- the agent is being asked to publish, gate, or automate a launch; or
|
|
166
166
|
- a vibecheck was already used for the same decision.
|
|
167
167
|
|
|
@@ -26,7 +26,8 @@ about a respondent, or a research decision. The researcher remains the authority
|
|
|
26
26
|
|
|
27
27
|
The researcher supplies a participant-free survey goal. The agent drafts two
|
|
28
28
|
four-question versions and may offer one SomaCheck check-in on the researcher's
|
|
29
|
-
own preferred direction. The researcher then
|
|
29
|
+
own preferred direction. The researcher then explicitly indicates a choice.
|
|
30
|
+
The output is a
|
|
30
31
|
signal-free survey definition for a QuestionPro owner to review. This recipe
|
|
31
32
|
does not create, publish, distribute, or populate a survey.
|
|
32
33
|
|
|
@@ -43,7 +44,8 @@ upgrade, buy a plan, administer access, or populate QuestionPro data. Propose tw
|
|
|
43
44
|
questionnaire framings and show the exact questions. Then offer one short
|
|
44
45
|
first-person proposition about my own preferred direction and wait for my
|
|
45
46
|
acceptance before any proactive SomaCheck ask. Give the result and confidence to
|
|
46
|
-
the agent as context and let it use its judgment. Ask what I choose
|
|
47
|
+
the agent as context and let it use its judgment. Ask what I choose and accept
|
|
48
|
+
any explicit response available in this interface.
|
|
47
49
|
Keep the proposition, reading, confidence, and confirmation out of QuestionPro.
|
|
48
50
|
Return a copy-ready, signal-free survey definition only. Do not create, edit,
|
|
49
51
|
send, distribute, publish, recruit, launch, access responses, or spend anything.
|
|
@@ -77,7 +79,8 @@ send, distribute, publish, recruit, launch, access responses, or spend anything.
|
|
|
77
79
|
6. Give the proposition, Aligned or Unaligned result, and confidence to the
|
|
78
80
|
agent. Let the agent use its judgment in context without treating the result
|
|
79
81
|
as authorization or a claim about respondents.
|
|
80
|
-
7. Ask
|
|
82
|
+
7. Ask the researcher to indicate their choice explicitly. Their choice controls
|
|
83
|
+
the plan.
|
|
81
84
|
8. Return a copy-ready payload with title, purpose, questions, answer choices,
|
|
82
85
|
and optional logic. Exclude all SomaCheck data and platform identifiers.
|
|
83
86
|
9. Stop before any QuestionPro data or action call. A partner owner may review
|
|
@@ -115,8 +115,8 @@ Typeform write or launch condition.
|
|
|
115
115
|
`pending`, is `expired` or `cancelled`, or errors, continue without a result;
|
|
116
116
|
do not infer one or start another request.
|
|
117
117
|
8. **Return authority.** Offer revise, split a question, soften leading
|
|
118
|
-
wording, add an answer option, pilot, proceed, pause, or leave unchanged.
|
|
119
|
-
|
|
118
|
+
wording, add an answer option, pilot, proceed, pause, or leave unchanged. An
|
|
119
|
+
explicit researcher choice overrides the signal.
|
|
120
120
|
9. **Keep the signal private.** Do not write the verdict, confidence, gesture,
|
|
121
121
|
or confirmation to Typeform. If the researcher asks for a Typeform edit,
|
|
122
122
|
show the exact signal-free edit first and call the Typeform write tool only
|
|
@@ -159,7 +159,7 @@ Do not trigger when:
|
|
|
159
159
|
free-text answers;
|
|
160
160
|
- the result would affect eligibility, payment, employment, grading, access,
|
|
161
161
|
support priority, response quality, or survey validity;
|
|
162
|
-
- the researcher has already made a clear
|
|
162
|
+
- the researcher has already made a clear choice;
|
|
163
163
|
- the researcher has declined a recent offer or opted out; or
|
|
164
164
|
- a vibecheck was already used for the same decision.
|
|
165
165
|
|
|
@@ -57,7 +57,8 @@ gates.
|
|
|
57
57
|
|
|
58
58
|
The researcher gives the agent a participant-free study idea. The agent drafts
|
|
59
59
|
two neutral framings, offers one first-person SomaCheck check-in about the
|
|
60
|
-
researcher's own direction, and
|
|
60
|
+
researcher's own direction, and accepts any explicit response available in the
|
|
61
|
+
interface. The agent
|
|
61
62
|
returns a complete copy-ready payload and stops. User Interviews remains
|
|
62
63
|
unchanged. Any later draft creation is a separate future recipe and review, not
|
|
63
64
|
an optional branch of this one.
|
|
@@ -79,7 +80,8 @@ Propose two neutral study framings and show the exact
|
|
|
79
80
|
signal-free project copy. Then offer one short first-person proposition about
|
|
80
81
|
my own preferred direction and ask for one SomaCheck check-in on that exact
|
|
81
82
|
wording. Keep the proposition, reading, confidence, and my confirmation out of
|
|
82
|
-
User Interviews. Afterward ask what I choose
|
|
83
|
+
User Interviews. Afterward ask what I choose and accept any explicit response
|
|
84
|
+
available in this interface. Return the complete
|
|
83
85
|
signal-free, copy-ready project payload only. Do not create, edit, recruit,
|
|
84
86
|
invite, message, schedule, screen, launch, publish, attach incentives, spend,
|
|
85
87
|
read participant data, or call a broader or undocumented tool.
|
|
@@ -152,14 +154,14 @@ tools, stop without calling it.
|
|
|
152
154
|
8. **Return authority.** Separate observation, interpretation (`aligned` or
|
|
153
155
|
`unaligned` plus confidence), confirmation, and choice. `unaligned` may
|
|
154
156
|
indicate possible inner conflict relative to the proposition; it does not
|
|
155
|
-
identify a cause or select a study design. The researcher's
|
|
157
|
+
identify a cause or select a study design. The researcher's explicit choice
|
|
156
158
|
controls.
|
|
157
159
|
9. **Prepare the exact payload.** Show title, purpose, study type, questions or
|
|
158
160
|
tasks, and any required non-contact fields. Exclude the proposition, result,
|
|
159
161
|
confidence, confirmation, SomaCheck wording, participant metadata, and
|
|
160
162
|
hidden fields.
|
|
161
163
|
10. **Stop before every platform call.** The SomaCheck reading and the
|
|
162
|
-
researcher's
|
|
164
|
+
researcher's explicit choice are not approval to use User Interviews. Do not
|
|
163
165
|
call create, update,
|
|
164
166
|
read-back, recruitment, messaging, scheduling, participant, incentive,
|
|
165
167
|
launch, publish, or data tools.
|
|
@@ -188,8 +190,8 @@ Not allowed:
|
|
|
188
190
|
The test passes when:
|
|
189
191
|
|
|
190
192
|
- the researcher receives at most one live SomaCheck request on their phone;
|
|
191
|
-
- the agent presents the result as context and asks the researcher
|
|
192
|
-
|
|
193
|
+
- the agent presents the result as context and asks the researcher to indicate
|
|
194
|
+
their choice explicitly;
|
|
193
195
|
- the agent returns the exact signal-free, copy-ready project payload;
|
|
194
196
|
- no User Interviews data or action tool is invoked and the workspace remains
|
|
195
197
|
unchanged; and
|
|
@@ -212,7 +214,7 @@ The test passes when:
|
|
|
212
214
|
proceed without a reading if unresolved.
|
|
213
215
|
- **Unreadable capture:** Offer a retry only if the researcher wants it;
|
|
214
216
|
unreadable is not a third interpretation.
|
|
215
|
-
- **Researcher disagrees with the reading:** Follow the researcher's
|
|
217
|
+
- **Researcher disagrees with the reading:** Follow the researcher's explicit
|
|
216
218
|
choice without reconciliation or repetition.
|
|
217
219
|
|
|
218
220
|
## Privacy boundary
|