@zibby/skills 0.2.23 → 0.2.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/browser.d.ts +0 -17
  2. package/dist/browser.js +3 -3
  3. package/dist/code-scan.d.ts +1 -1
  4. package/dist/index.d.ts +0 -1
  5. package/dist/index.js +97 -97
  6. package/dist/jira.d.ts +75 -9
  7. package/dist/jira.js +4 -4
  8. package/dist/package.json +1 -1
  9. package/dist/report.d.ts +51 -276
  10. package/dist/trackers/index.js +12 -12
  11. package/dist/trackers/jira-adapter.js +11 -11
  12. package/package.json +1 -1
  13. package/docs/analysis.md +0 -109
  14. package/docs/apps/agent-ops.md +0 -130
  15. package/docs/apps/auth.md +0 -158
  16. package/docs/apps/deploy.md +0 -207
  17. package/docs/apps/goal-mode.md +0 -175
  18. package/docs/apps/index.md +0 -149
  19. package/docs/apps/managing.md +0 -121
  20. package/docs/cli-reference.md +0 -494
  21. package/docs/cloning-repositories.md +0 -285
  22. package/docs/cloud/bundles.md +0 -92
  23. package/docs/cloud/dedicated-egress.md +0 -140
  24. package/docs/cloud/editing-prompts.md +0 -79
  25. package/docs/cloud/env-vars.md +0 -144
  26. package/docs/cloud/limits.md +0 -81
  27. package/docs/cloud/logs.md +0 -104
  28. package/docs/cloud/triggering.md +0 -128
  29. package/docs/concepts/agents.md +0 -112
  30. package/docs/concepts/designing-agents.md +0 -247
  31. package/docs/concepts/graph.md +0 -83
  32. package/docs/concepts/sessions.md +0 -70
  33. package/docs/concepts/skills.md +0 -86
  34. package/docs/concepts/state.md +0 -106
  35. package/docs/concepts/sub-graphs.md +0 -227
  36. package/docs/custom-workflows.md +0 -358
  37. package/docs/get-started/deploy.md +0 -75
  38. package/docs/get-started/install.md +0 -60
  39. package/docs/get-started/run-locally.md +0 -94
  40. package/docs/get-started/trigger-and-logs.md +0 -90
  41. package/docs/get-started/use-from-agents.md +0 -153
  42. package/docs/get-started/your-first-workflow.md +0 -69
  43. package/docs/getting-started.md +0 -108
  44. package/docs/installation.md +0 -127
  45. package/docs/integrations/github.md +0 -73
  46. package/docs/integrations/gitlab.md +0 -43
  47. package/docs/integrations/jira.md +0 -71
  48. package/docs/integrations/lark.md +0 -41
  49. package/docs/integrations/linear.md +0 -43
  50. package/docs/integrations/notion.md +0 -33
  51. package/docs/integrations/plane.md +0 -46
  52. package/docs/integrations/sentry.md +0 -42
  53. package/docs/integrations/slack.md +0 -33
  54. package/docs/intro.md +0 -86
  55. package/docs/legacy/test-automation.md +0 -111
  56. package/docs/packages/agent-workflow.md +0 -88
  57. package/docs/packages/cli.md +0 -73
  58. package/docs/packages/core.md +0 -72
  59. package/docs/packages/mcp-browser.md +0 -110
  60. package/docs/packages/mcp-cli.md +0 -176
  61. package/docs/packages/memory.md +0 -223
  62. package/docs/packages/skills.md +0 -218
  63. package/docs/packages/ui-memory.md +0 -245
  64. package/docs/recipes/bug-autofix.md +0 -85
  65. package/docs/recipes/github-ai-scout.md +0 -61
  66. package/docs/recipes/index.md +0 -68
  67. package/docs/recipes/pipeline-supervisor.md +0 -57
  68. package/docs/recipes/sentry-triage.md +0 -93
  69. package/docs/recipes/test.md +0 -190
  70. package/docs/reviewing-results.md +0 -114
  71. package/docs/running-tests.md +0 -134
  72. package/docs/self-host/backup-restore.md +0 -53
  73. package/docs/self-host/custom-sidecars.md +0 -136
  74. package/docs/self-host/index.md +0 -75
  75. package/docs/self-host/storage.md +0 -50
  76. package/docs/self-host/troubleshooting.md +0 -48
  77. package/docs/self-host/upgrade.md +0 -81
  78. package/docs/skills/browser.md +0 -97
  79. package/docs/skills/chat-memory.md +0 -122
  80. package/docs/skills/core-tools.md +0 -80
  81. package/docs/skills/function-skill.md +0 -93
  82. package/docs/skills/github.md +0 -91
  83. package/docs/skills/index.md +0 -46
  84. package/docs/skills/jira.md +0 -99
  85. package/docs/skills/lark.md +0 -85
  86. package/docs/skills/memory.md +0 -92
  87. package/docs/skills/sentry.md +0 -80
  88. package/docs/skills/slack.md +0 -89
  89. package/docs/tests/memory.md +0 -131
  90. package/docs/triggering-workflows.md +0 -552
  91. package/docs/workflow-artifact-layout-evaluation.md +0 -119
  92. package/docs/workflow.md +0 -558
@@ -1,85 +0,0 @@
1
- ---
2
- sidebar_position: 3
3
- title: Lark
4
- ---
5
-
6
- # Lark skill
7
-
8
- Send messages, reply in threads, list chats, and read chat history on Lark / Feishu.
9
-
10
- - **ID:** `lark`
11
- - **MCP server:** `lark` (tools exposed as `mcp__lark__*`)
12
-
13
- ## Tools provided
14
-
15
- | Tool | What it does |
16
- |---|---|
17
- | `lark_send_message` | Send a text message. `receive_id` accepts chat_id (`oc_*`), open_id (`ou_*`), union_id (`on_*`), or email — the receive id type is inferred from the prefix |
18
- | `lark_reply` | Reply to a specific `message_id` (creates a thread) |
19
- | `lark_list_chats` | List chats the bot is a member of |
20
- | `lark_get_chat_history` | Fetch recent messages in a `chat_id` (newest first), default `page_size: 20` |
21
-
22
- ## Setup
23
-
24
- Lark bots authenticate with App ID + App Secret. The bot needs `im:message` and `im:chat:readonly` (or wider) permissions, and must be added to any chat it should read or post into.
25
-
26
- 1. Create a custom app at [open.feishu.cn](https://open.feishu.cn/) (or Lark's open platform).
27
- 2. Enable **Bot** capability and grant the IM permissions above.
28
- 3. In the Zibby dashboard, **Settings → Integrations → Connect Lark**, paste your `App ID` and `App Secret`.
29
- 4. The backend exchanges them for a `tenant_access_token` on demand and caches it (TTL ~100 min, just under Lark's 2h).
30
-
31
- For self-hosted Lark deployments, set `host` on the integration config; the default is the standard Feishu host.
32
-
33
- ## Use in an agent
34
-
35
- ```js
36
- import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
37
- import { SKILLS } from '@zibby/skills';
38
-
39
- export class IncidentNotifier extends WorkflowAgent {
40
- buildGraph() {
41
- const graph = new WorkflowGraph();
42
- graph.addNode('notify', {
43
- agent: 'claude',
44
- skills: [SKILLS.LARK],
45
- prompt: (state) => `Post a summary of incident ${state.incidentId} to the on-call
46
- chat (chat_id: oc_xxxxx). If a previous thread exists in state.threadMessageId,
47
- use lark_reply instead of lark_send_message.`,
48
- });
49
- return graph;
50
- }
51
- }
52
- ```
53
-
54
- ## Output example
55
-
56
- `lark_send_message`:
57
-
58
- ```json
59
- { "ok": true, "message_id": "om_d2e6e3a1f24c9d3..." }
60
- ```
61
-
62
- `lark_get_chat_history`:
63
-
64
- ```json
65
- {
66
- "messages": [
67
- {
68
- "message_id": "om_abc...",
69
- "sender_id": "ou_xyz...",
70
- "sender_type": "user",
71
- "msg_type": "text",
72
- "content": "{\"text\":\"deploy is green\"}",
73
- "create_time": "1715839203000"
74
- }
75
- ]
76
- }
77
- ```
78
-
79
- ## Implementation notes
80
-
81
- Spawns `packages/skills/bin/mcp-lark.mjs`. Like Sentry, auth is fetched through the backend's `resolveIntegrationToken('lark')` endpoint and the tenant access token is cached in-process.
82
-
83
- `receive_id_type` is required by Lark and is inferred from the id prefix (`oc_` → chat_id, `ou_` → open_id, `on_` → union_id, `cli_` → app_id, anything with `@` → email). Callers pass whichever id they have.
84
-
85
- The MCP server uses `alwaysLoad: true` so tools land in the system prompt — same fix as Sentry. The `assistant` agent strategy can call the in-process `handleToolCall` for OpenAI Assistant API runs.
@@ -1,92 +0,0 @@
1
- ---
2
- sidebar_position: 7
3
- title: Memory (test)
4
- ---
5
-
6
- # Memory skill
7
-
8
- Query the test memory database — prior test runs, known selectors with stability metrics, page models, navigation transitions — and save insights for future runs. Dolt-backed (git-style versioned SQL).
9
-
10
- - **ID:** `memory`
11
- - **MCP server:** `memory` (tools exposed as `mcp__memory__*`)
12
- - **Underlying server:** `@zibby/ui-memory/mcp-server`
13
-
14
- For persistent **chat** memory (not test history) see [Chat memory](./chat-memory.md).
15
-
16
- ## Tools provided
17
-
18
- | Tool | What it does |
19
- |---|---|
20
- | `memory_get_test_history` | Recent test runs with pass/fail + timing. Filter by `specPath` substring |
21
- | `memory_get_selectors` | Known selectors for a page with stability metrics. Filter by `pageUrl` substring |
22
- | `memory_get_page_model` | Page structure — elements, roles, selectors. Filter by `url` substring |
23
- | `memory_get_navigation` | Known page-to-page transitions. Filter by `fromUrl` substring |
24
- | `memory_save_insight` | Save an observation. Categories: `selector_tip`, `timing`, `navigation`, `workaround`, `flaky`, `general` |
25
-
26
- ## Setup
27
-
28
- Requires [Dolt](https://docs.dolthub.com/introduction/installation) and an initialized memory database in your workspace.
29
-
30
- ```bash
31
- # macOS
32
- brew install dolt
33
- # then, in your agent workspace:
34
- zibby init --mem
35
- ```
36
-
37
- `zibby init --mem` creates `.zibby/memory/` (a Dolt repo). The memory tools only activate after at least one completed test run — until then the skill returns `null` from `resolve()` and is skipped.
38
-
39
- Override the bin location for development with `MCP_MEMORY_PATH`.
40
-
41
- See [Tests → Memory](../tests/memory.md) for the full memory lifecycle.
42
-
43
- ## Use in an agent
44
-
45
- ```js
46
- import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
47
- import { SKILLS } from '@zibby/skills';
48
-
49
- export class FlakyTestInvestigator extends WorkflowAgent {
50
- buildGraph() {
51
- const graph = new WorkflowGraph();
52
- graph.addNode('investigate', {
53
- agent: 'claude',
54
- skills: [SKILLS.MEMORY, SKILLS.BROWSER],
55
- prompt: (state) => `Before running the test:
56
- 1. Call memory_get_test_history with specPath="${state.specPath}" — review prior failures.
57
- 2. Call memory_get_selectors with pageUrl matching the target page.
58
- Then run the test using the browser tools. When done, save a memory_save_insight
59
- capturing any selectors that worked when an older one failed.`,
60
- });
61
- return graph;
62
- }
63
- }
64
- ```
65
-
66
- The skill's prompt fragment auto-instructs the agent to consult prior runs and call `memory_save_insight` mid-run when a fallback selector works, and at minimum once at end-of-run.
67
-
68
- ## Output example
69
-
70
- `memory_get_selectors`:
71
-
72
- ```json
73
- {
74
- "selectors": [
75
- {
76
- "pageUrl": "/dashboard",
77
- "role": "button",
78
- "stableId": "e7a1",
79
- "selector": "[data-testid='new-project']",
80
- "successCount": 42,
81
- "failureCount": 1,
82
- "lastSeen": "2026-05-15T14:00:00Z"
83
- }
84
- ]
85
- }
86
- ```
87
-
88
- ## Implementation notes
89
-
90
- `resolve({ workspace })` resolves `@zibby/ui-memory/mcp-server` and spawns it with `--db-path .zibby/memory`. Before spawning it sanity-checks Dolt is on the PATH and the database has at least one `test_runs` row; if not, returns `null` (skill skipped silently) or throws a clear "install Dolt" error.
91
-
92
- The skill also exports `middleware()` that loads `createMemoryMiddleware()` from `@zibby/ui-memory` when the package is present — this runs before/after each node to inject test history into the prompt and persist new insights.
@@ -1,80 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- title: Sentry
4
- ---
5
-
6
- # Sentry skill
7
-
8
- Read-only access to a connected Sentry organization — list projects, list issues, fetch issue details.
9
-
10
- - **ID:** `sentry`
11
- - **MCP server:** `sentry` (tools exposed as `mcp__sentry__*`)
12
-
13
- ## Tools provided
14
-
15
- | Tool | What it does |
16
- |---|---|
17
- | `sentry_list_projects` | List projects in the connected organization (slug, name, platform) |
18
- | `sentry_list_issues` | List issues. Supports `project`, `query` (Sentry search syntax, default `is:unresolved`), `sort` (`date`/`new`/`priority`/`freq`/`user`), `limit` |
19
- | `sentry_get_issue` | Detailed info for one issue by `issueId` — title, culprit, counts, first/last seen, level, status |
20
-
21
- ## Setup
22
-
23
- Sentry uses OAuth 2.0 with PKCE (public client — no client secret).
24
-
25
- 1. In the Zibby dashboard, go to **Settings → Integrations**.
26
- 2. Click **Connect Sentry**.
27
- 3. Approve the organization in the Sentry consent screen.
28
- 4. You're redirected back; the access token + organization slug are stored encrypted on the project.
29
-
30
- The backend (`/integrations/sentry/connect` and `/integrations/sentry/callback`) handles the PKCE exchange. Tokens auto-refresh on use; if refresh fails, click **Reconnect** in the same settings panel.
31
-
32
- ## Use in an agent
33
-
34
- ```js
35
- import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
36
- import { SKILLS } from '@zibby/skills';
37
-
38
- export class SentryTriage extends WorkflowAgent {
39
- buildGraph() {
40
- const graph = new WorkflowGraph();
41
- graph.addNode('triage', {
42
- agent: 'claude',
43
- skills: [SKILLS.SENTRY],
44
- prompt: () => `Use sentry_list_issues with query "is:unresolved level:error" to find the
45
- top 10 unresolved errors. Then call sentry_get_issue for the highest-frequency one
46
- and summarize what's failing.`,
47
- });
48
- return graph;
49
- }
50
- }
51
- ```
52
-
53
- ## Output example
54
-
55
- `sentry_list_issues`:
56
-
57
- ```json
58
- {
59
- "issues": [
60
- {
61
- "id": "5712345678",
62
- "title": "TypeError: Cannot read properties of undefined (reading 'id')",
63
- "culprit": "src/handlers/checkout.ts in handleSubmit",
64
- "count": 1247,
65
- "firstSeen": "2026-05-01T14:22:10Z",
66
- "lastSeen": "2026-05-16T09:11:03Z",
67
- "level": "error",
68
- "status": "unresolved"
69
- }
70
- ]
71
- }
72
- ```
73
-
74
- ## Implementation notes
75
-
76
- Spawns `packages/skills/bin/mcp-sentry.mjs` via `node`. Auth is delegated: the bin calls the Zibby backend's `resolveIntegrationToken('sentry')` endpoint using `PROJECT_API_TOKEN` + `PROGRESS_API_URL` (passed through from the Fargate environment).
77
-
78
- `alwaysLoad: true` is set on the MCP server config so Sentry tools land in the initial system prompt instead of behind the Claude SDK's lazy `ToolSearch` (which misses MCP-served tools by keyword).
79
-
80
- The skill also implements `handleToolCall` for the `assistant` agent strategy (OpenAI Assistant API), which doesn't speak MCP — same Sentry API, dispatched in-process.
@@ -1,89 +0,0 @@
1
- ---
2
- sidebar_position: 5
3
- title: Slack
4
- ---
5
-
6
- # Slack skill
7
-
8
- Read/write a Slack workspace — list channels, post messages, reply in threads, react, read history, list users.
9
-
10
- - **ID:** `slack`
11
- - **MCP server:** `slack` (tools exposed as `mcp__slack__*`)
12
- - **Underlying server:** `npx @modelcontextprotocol/server-slack@latest`
13
-
14
- ## Tools provided
15
-
16
- | Tool | What it does |
17
- |---|---|
18
- | `slack_list_channels` | List public channels (id, name, topic) |
19
- | `slack_post_message` | Post a top-level message. Requires `channel` and `text` |
20
- | `slack_reply_to_thread` | Post a reply with `thread_ts` |
21
- | `slack_add_reaction` | Add an emoji reaction to a message |
22
- | `slack_get_channel_history` | Recent messages in a channel (`limit` default 20) |
23
- | `slack_get_thread_replies` | All replies in a thread |
24
- | `slack_get_users` | Workspace members (excludes bots and deleted) |
25
- | `slack_get_user_profile` | Detailed profile for a `user_id` |
26
-
27
- ## Setup
28
-
29
- Slack uses a bot token + workspace team id.
30
-
31
- 1. Create (or reuse) a Slack app at [api.slack.com/apps](https://api.slack.com/apps).
32
- 2. Add Bot Token Scopes — the full set this skill's tools need:
33
- `chat:write`, `channels:read`, `channels:history`, `groups:read`, `groups:history`,
34
- `reactions:write`, `users:read`, `users:read.email`, `users.profile:read`, `usergroups:read`.
35
- (`users:read.email` backs `slack_find_user_by_email`; `usergroups:read` backs
36
- `slack_list_usergroups` / `slack_get_usergroup_members` — omit either and those
37
- tools fail with `missing_scope`.)
38
- 3. Install the app to your workspace; copy the **Bot User OAuth Token** (`xoxb-…`) and **Team ID**.
39
- 4. Set them on the agent's env (locally) or via **Cloud → Env vars**:
40
-
41
- ```bash
42
- SLACK_BOT_TOKEN=xoxb-...
43
- SLACK_TEAM_ID=T01234567
44
- ```
45
-
46
- The skill declares `envKeys: ['SLACK_BOT_TOKEN', 'SLACK_TEAM_ID']` and the official `@modelcontextprotocol/server-slack` consumes them.
47
-
48
- ## Use in an agent
49
-
50
- ```js
51
- import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
52
- import { SKILLS } from '@zibby/skills';
53
-
54
- export class DeployAnnouncer extends WorkflowAgent {
55
- buildGraph() {
56
- const graph = new WorkflowGraph();
57
- graph.addNode('announce', {
58
- agent: 'claude',
59
- skills: [SKILLS.SLACK],
60
- prompt: (state) => `Post to #deploys: "v${state.version} deployed to ${state.env}".
61
- If state.threadTs is set, use slack_reply_to_thread instead of slack_post_message.`,
62
- });
63
- return graph;
64
- }
65
- }
66
- ```
67
-
68
- ## Output example
69
-
70
- `slack_post_message`:
71
-
72
- ```json
73
- { "ok": true, "ts": "1715839203.000400", "channel": "C0123ABC" }
74
- ```
75
-
76
- `slack_list_channels`:
77
-
78
- ```json
79
- {
80
- "channels": [
81
- { "id": "C0123ABC", "name": "deploys", "topic": "Release announcements" },
82
- { "id": "C0456DEF", "name": "incidents", "topic": "P0/P1 coordination" }
83
- ]
84
- }
85
- ```
86
-
87
- ## Implementation notes
88
-
89
- `resolve()` spawns the official `@modelcontextprotocol/server-slack` via `npx` and passes through `SLACK_BOT_TOKEN` + `SLACK_TEAM_ID`. The in-process `handleToolCall` (used by the `assistant` strategy) talks directly to `https://slack.com/api/<method>` with the same bot token resolved via the backend's integration token service.
@@ -1,131 +0,0 @@
1
- ---
2
- sidebar_position: 1
3
- title: Test memory
4
- ---
5
-
6
- # Test memory
7
-
8
- Zibby's `zibby test` runner has a local-first **memory database** at `.zibby/memory/.dolt/` that learns from every run — selectors that worked, page-element fingerprints, navigation transitions, timing quirks, recorded insights. Cross-spec via per-domain keying, optionally synced across the team.
9
-
10
- The package powering this is [`@zibby/ui-memory`](../packages/ui-memory) — read that for the schema and SDK. This page is a **usage walkthrough**.
11
-
12
- ## What's in the box
13
-
14
- - **Local DB** — `.zibby/memory/.dolt/` (Dolt SQL, version-controlled like git)
15
- - **5 MCP tools** auto-exposed when `zibby test` runs and the DB exists
16
- - **Auto-pull / auto-push** before and after each test run when a remote is configured
17
- - **CLI** — `zibby memory <verb>` for stats, cost, compact, reset, pull, push, remote management
18
-
19
- ## Why per-domain keying matters
20
-
21
- Memory is keyed on the **domain**, not the spec file. Selectors learned by `login.txt` for `myapp.com/login` are immediately available when `checkout.txt` lands on `myapp.com/checkout` and asks "what's a stable selector for the email field on this site?"
22
-
23
- In practice this means a multi-spec suite gets sharper with every run — the agent's Nth run on a domain is meaningfully cheaper and more reliable than its first.
24
-
25
- ## The 5 MCP tools
26
-
27
- When `zibby test` runs and `.zibby/memory/.dolt/` exists, the agent gets these auto-exposed:
28
-
29
- | Tool | What it does |
30
- |---|---|
31
- | `memory_get_test_history` | Recent runs (filter by spec-path substring) — pass/fail and timing |
32
- | `memory_get_selectors` | Known selectors per page with success/fail counts |
33
- | `memory_get_page_model` | Page elements (URL, ARIA role, accessible name, best-known selector) |
34
- | `memory_get_navigation` | Known transitions (from URL → to URL via what trigger) |
35
- | `memory_save_insight` | Save an observation: `selector_tip | timing | navigation | workaround | flaky | general` |
36
-
37
- > **The agent must call `memory_save_insight` at least once per run.** It's required by the memory skill's prompt fragment. Without insights, only the structural data (selectors / runs) compounds; insights are how the system learns "the site shows a banner on Tuesdays" or "this button needs a 200ms wait after focus".
38
-
39
- ## CLI commands
40
-
41
- ```bash
42
- zibby memory init # initialize (auto-runs on first `zibby test -m`)
43
- zibby memory stats # row counts, last commit, per-spec breakdown
44
- zibby memory cost # real LLM token spend per spec / per domain (input/output/cache)
45
- zibby memory compact # prune old runs + Dolt GC (--max-runs 50, --max-age 90d)
46
- zibby memory reset -f # wipe the DB (destructive — confirm)
47
- ```
48
-
49
- `compact` is the maintenance lever once the DB grows. `cost` is the most-asked-after view — it answers "which spec is the expensive one?" with real numbers.
50
-
51
- ## Team sync
52
-
53
- Memory is local-first by default. Opt into a shared remote so teammates' learnings flow back to you:
54
-
55
- ```bash
56
- # Option A: bring your own bucket
57
- zibby memory remote add aws://my-bucket/team/proj/main # S3
58
- zibby memory remote add gs://bucket/team/proj/main # GCS
59
- zibby memory remote add https://www.dolthub.com/repositories/<owner>/<repo>
60
- zibby memory remote add file:///abs/path/to/local-shared # filesystem
61
-
62
- # Option B: Zibby-managed S3 (signed-in users only)
63
- zibby memory remote use --hosted
64
-
65
- # Inspect / disconnect
66
- zibby memory remote info
67
- zibby memory remote remove [name] # default: origin
68
- ```
69
-
70
- Once a remote is configured:
71
-
72
- - `zibby test` auto-pulls before each run
73
- - `zibby test` auto-pushes after each **passing** run (failing runs don't pollute team memory)
74
- - `zibby memory pull` / `zibby memory push` for manual override
75
-
76
- ### Auto-wire teammates with `memorySync.remote`
77
-
78
- Drop this into `.zibby.config.mjs` and commit it:
79
-
80
- ```js
81
- export default {
82
- agent: { claude: { model: 'auto' } },
83
- memorySync: {
84
- remote: 'hosted', // or 'aws://my-bucket/team/proj/main' or null
85
- },
86
- };
87
- ```
88
-
89
- Now when a teammate clones the repo and runs `zibby init`, the CLI reads `memorySync.remote` and auto-configures the matching remote. For `'hosted'`, init prompts for `zibby login` if they're not signed in but never blocks the init itself.
90
-
91
- ### Hosted vs BYO at a glance
92
-
93
- | | Hosted (`--hosted`) | BYO |
94
- |---|---|---|
95
- | Setup time | One command | Provision bucket + IAM (+ KMS if you want) |
96
- | Where data lives | Zibby-managed AWS account | Your account |
97
- | Access | Anyone with Zibby project access | Whoever your IAM grants |
98
- | Compliance / data residency | Limited regions | Wherever you want |
99
- | Cost | Included in plan | Your S3 bill |
100
-
101
- If you have any data-residency requirement or a regulated workload, prefer BYO. Otherwise hosted is the path of least resistance.
102
-
103
- ## Run-level controls
104
-
105
- `zibby test` exposes one memory-relevant flag:
106
-
107
- ```bash
108
- zibby test test-specs/login.txt -m # enable test memory (auto-init if needed)
109
- zibby test test-specs/login.txt --no-sync # don't push to cloud (does not affect memory remote)
110
- ```
111
-
112
- Memory is independent of the cloud-results sync (`--sync` / `--no-sync` controls run upload to the Zibby dashboard; memory sync is its own remote).
113
-
114
- ## Inspecting the DB by hand
115
-
116
- It's just Dolt:
117
-
118
- ```bash
119
- cd .zibby/memory
120
- dolt log
121
- dolt sql -q "SELECT spec_path, passed, duration_ms FROM test_runs ORDER BY created_at DESC LIMIT 20"
122
- dolt diff HEAD~1 HEAD
123
- ```
124
-
125
- Branching works too — `dolt branch experiment` to try out a memory mutation in isolation.
126
-
127
- ## See also
128
-
129
- - [`@zibby/ui-memory` package](../packages/ui-memory) — schema, SDK, middleware
130
- - [`zibby test` recipe](../recipes/test) — the primary consumer
131
- - [CLI reference: memory](../cli-reference#memory) — full command list