You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .claude/rules/sim-url-state.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,6 +46,20 @@ These reads/mutations are **not** anti-patterns and stay as-is:
46
46
-**Route navigations** — `router.push('/path/[id]?folderId=x')` that changes the route *path*, not just the current query. A nuqs setter only mutates the query on the current path; cross-path navigation stays on `router`.
47
47
-**Read-once auth / redirect signals** — `token`, `callbackUrl`, `redirect`, `error`, `invite_flow`, `new` (invite signup flow), `upgraded`, `redirect_workflow`, etc. These are navigation signals consumed once (often read-then-strip), not synced view-state. Leave them on `useSearchParams`. Key names are per-surface: files' `new` is a genuine nuqs param (`files/search-params.ts`), while invite's `new` is a one-shot signup signal.
48
48
49
+
### Remembered list-preference exception
50
+
51
+
Files, Tables, and Knowledge may persist their last-used filter/sort snapshot through
52
+
`useResourceListPreferences`. This is a fallback preference, not a second live source of truth:
53
+
54
+
- nuqs remains authoritative while the module is open.
55
+
- Zustand is consulted once on a clean module entry, after persisted state hydrates.
56
+
- An explicit URL filter/sort parameter wins even when it resolves to the module default. The
57
+
complete resolved URL snapshot becomes the remembered value; omitted fields use URL defaults
58
+
rather than merging with storage.
59
+
- Explicit filter/sort gestures commit the same complete snapshot to nuqs and Zustand together.
60
+
- Never mirror subsequent URL changes with a synchronization effect or `popstate` listener.
61
+
- Search and folder navigation remain URL-only and are excluded from the persisted snapshot.
62
+
49
63
## Per-feature `search-params.ts` — single source of truth
50
64
51
65
Co-locate a `search-params.ts` next to the feature. Export the parser map (and shared options). Both the client (`useQueryStates`/`useQueryState`) and any server component (`createSearchParamsCache` from `nuqs/server`) import from this one file. Import parsers from `nuqs/server` so the module is safe to import in both client and server contexts.
|`--start-date <value>`| No | Custom period start (ISO 8601). |
269
269
|`--end-date <value>`| No | Custom period end (ISO 8601). |
@@ -4366,6 +4366,36 @@ sim tables mkdir <path>
4366
4366
4367
4367
## sim tools
4368
4368
4369
+
### sim tools execute
4370
+
4371
+
Run one built-in tool and print what it produced (personal API key required)
4372
+
4373
+
```bash
4374
+
sim tools execute <toolId> [options]
4375
+
```
4376
+
4377
+
**Arguments**
4378
+
4379
+
<CommandTable>
4380
+
4381
+
| Argument | Required | Description |
4382
+
| --- | --- | --- |
4383
+
|`toolId`| Yes | Tool identifier. An unversioned name resolves to the newest version, and the response echoes the resolved id. |
4384
+
4385
+
</CommandTable>
4386
+
4387
+
**Options**
4388
+
4389
+
<CommandTable>
4390
+
4391
+
| Option | Required | Description |
4392
+
| --- | --- | --- |
4393
+
|`--input <json\|@file>`| No | Tool arguments as JSON, keyed by the parameter ids `sim tools get <toolId>` lists (JSON, or @path / @- to read a file or stdin). |
4394
+
|`--credential-id <value>`| No | Credential to authenticate with, required for OAuth tools. |
4395
+
|`--timeout <value>`| No | Seconds to wait before abandoning the call. |
Copy file name to clipboardExpand all lines: apps/docs/content/docs/cli/tools.mdx
+30Lines changed: 30 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,36 @@ import { CommandTable } from '@/components/ui/command-table'
7
7
8
8
Every command below also accepts the [global options](/cli/commands#global-options).
9
9
10
+
## Run one built-in tool and print what it produced
11
+
12
+
```bash
13
+
sim tools execute <toolId> [options]
14
+
```
15
+
16
+
Run one built-in tool and print what it produced (personal API key required)
17
+
18
+
**Arguments**
19
+
20
+
<CommandTable>
21
+
22
+
| Argument | Required | Description |
23
+
| --- | --- | --- |
24
+
|`toolId`| Yes | Tool identifier. An unversioned name resolves to the newest version, and the response echoes the resolved id. |
25
+
26
+
</CommandTable>
27
+
28
+
**Options**
29
+
30
+
<CommandTable>
31
+
32
+
| Option | Required | Description |
33
+
| --- | --- | --- |
34
+
|`--input <json\|@file>`| No | Tool arguments as JSON, keyed by the parameter ids `sim tools get <toolId>` lists (JSON, or @path / @- to read a file or stdin). |
35
+
|`--credential-id <value>`| No | Credential to authenticate with, required for OAuth tools. |
36
+
|`--timeout <value>`| No | Seconds to wait before abandoning the call. |
Copy file name to clipboardExpand all lines: apps/docs/content/docs/integrations/calcom.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,7 +44,7 @@ Create a new booking on Cal.com
44
44
| --------- | ---- | -------- | ----------- |
45
45
|`eventTypeId`| number | Yes | The ID of the event type to book |
46
46
|`start`| string | Yes | Start time in UTC ISO 8601 format \(e.g., 2024-01-15T09:00:00Z\)|
47
-
|`attendee`| object | Yes | Attendee information object with name, email, timeZone, and optional phoneNumber\(constructed from individual attendee fields\)|
47
+
|`attendee`| object | Yes | Attendee information object with name, email, timeZone, and optional phoneNumber. The Cal.com block composes this from its individual attendee fields; a direct caller sends the object.|
48
48
|`guests`| array | No | Array of guest email addresses |
49
49
|`lengthInMinutes`| number | No | Duration of the booking in minutes \(overrides event type default\)|
50
50
|`metadata`| object | No | Custom metadata to attach to the booking |
Copy file name to clipboardExpand all lines: apps/docs/openapi-v2-billing.json
+5-3Lines changed: 5 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -122,7 +122,8 @@
122
122
"knowledge-base",
123
123
"voice-input",
124
124
"enrichment",
125
-
"voice-output"
125
+
"voice-output",
126
+
"api-tool"
126
127
]
127
128
}
128
129
},
@@ -452,7 +453,7 @@
452
453
"description": "Human-readable explanation of the error."
453
454
},
454
455
"details": {
455
-
"description": "Structured error details. On a `403` whose cause a caller can act on, this carries a `code` from a closed set:\n- `INSUFFICIENT_WORKSPACE_ROLE` — The caller has access to the workspace but its role is below the one this operation requires.\n- `PERSONAL_API_KEYS_DISABLED` — The workspace's organization does not allow personal API keys. Use a workspace API key.\n- `WORKSPACE_KEY_OPERATION_NOT_PERMITTED` — This operation is not available to a workspace-scoped API key. Use a personal API key.\n- `PRINCIPAL_KIND_NOT_PERMITTED` — This operation does not accept the caller’s kind of API key.\n- `ORGANIZATION_MEMBERSHIP_REQUIRED` — The caller is not a member of the organization it named.\n- `ORGANIZATION_ADMIN_REQUIRED` — The caller is a member of the organization but not an admin or owner.\n- `ENTERPRISE_PLAN_REQUIRED` — The organization has no active enterprise subscription.\n- `ORGANIZATION_PLAN_REQUIRED` — The organization has no active organization subscription (Pro for Teams, Max for Teams, or Enterprise).\n- `AUDIT_LOGS_DISABLED` — Audit logging is not enabled for this deployment.\n- `SKILL_EDITOR_ACCESS_REQUIRED` — The caller can write in the workspace but is not an editor of this skill.\n- `SECRET_ADMIN_ACCESS_REQUIRED` — The caller can write in the workspace but is not an admin of this secret. Ask a workspace admin, or someone holding admin on the secret, to grant access or set the value.\n- `WORKSPACE_RESOURCE_LIMIT_REACHED` — The workspace already holds the maximum number of resources of this kind. Delete one, or contact Sim to raise the limit; the message names the ceiling.\n- `PUBLIC_SHARING_NOT_ALLOWED` — The workspace's organization does not permit sharing this resource publicly. An organization admin controls the policy.\n- `CREDENTIAL_ADMIN_ACCESS_REQUIRED` — The caller can reach the workspace but cannot administer this credential.\n- `MCP_SERVER_URL_NOT_ALLOWED` — The supplied MCP server URL is outside the allowed domains or resolves to an internal address.\n- `WORKSPACE_PLAN_CAPABILITY_REQUIRED` — The workspace's plan does not include a capability this request depends on. The message names the capability; upgrading the workspace's plan is the remedy.\n- `CHAT_AUTH_MODE_NOT_PERMITTED` — The workspace's permission group does not allow the chat authentication mode the request selected. A mode already saved on the deployment may still be re-saved; changing to a disallowed one cannot.\n- `CONNECTOR_MANAGED_RESOURCE_READ_ONLY` — This resource is managed by a knowledge base connector and cannot be edited directly. Change it at the source and re-sync, or exclude the document from the connector.\n- `PERMISSION_GROUP_CAPABILITY_BLOCKED` — The caller's permission group does not allow this capability. The message names it; an organization admin controls the group."
456
+
"description": "Structured error details. On a `403` whose cause a caller can act on, this carries a `code` from a closed set:\n- `INSUFFICIENT_WORKSPACE_ROLE` — The caller has access to the workspace but its role is below the one this operation requires.\n- `PERSONAL_API_KEYS_DISABLED` — The workspace's organization does not allow personal API keys. Use a workspace API key.\n- `WORKSPACE_KEY_OPERATION_NOT_PERMITTED` — This operation is not available to a workspace-scoped API key. Use a personal API key.\n- `PRINCIPAL_KIND_NOT_PERMITTED` — This operation does not accept the caller’s kind of API key.\n- `ORGANIZATION_MEMBERSHIP_REQUIRED` — The caller is not a member of the organization it named.\n- `ORGANIZATION_ADMIN_REQUIRED` — The caller is a member of the organization but not an admin or owner.\n- `ENTERPRISE_PLAN_REQUIRED` — The organization has no active enterprise subscription.\n- `ORGANIZATION_PLAN_REQUIRED` — The organization has no active organization subscription (Pro for Teams, Max for Teams, or Enterprise).\n- `AUDIT_LOGS_DISABLED` — Audit logging is not enabled for this deployment.\n- `SKILL_EDITOR_ACCESS_REQUIRED` — The caller can write in the workspace but is not an editor of this skill.\n- `SECRET_ADMIN_ACCESS_REQUIRED` — The caller can write in the workspace but is not an admin of this secret. Ask a workspace admin, or someone holding admin on the secret, to grant access or set the value.\n- `WORKSPACE_RESOURCE_LIMIT_REACHED` — The workspace already holds the maximum number of resources of this kind. Delete one, or contact Sim to raise the limit; the message names the ceiling.\n- `PUBLIC_SHARING_NOT_ALLOWED` — The workspace's organization does not permit sharing this resource publicly. An organization admin controls the policy.\n- `CREDENTIAL_ADMIN_ACCESS_REQUIRED` — The caller can reach the workspace but cannot administer this credential.\n- `MCP_SERVER_URL_NOT_ALLOWED` — The supplied MCP server URL is outside the allowed domains or resolves to an internal address.\n- `WORKSPACE_PLAN_CAPABILITY_REQUIRED` — The workspace's plan does not include a capability this request depends on. The message names the capability; upgrading the workspace's plan is the remedy.\n- `CHAT_AUTH_MODE_NOT_PERMITTED` — The workspace's permission group does not allow the chat authentication mode the request selected. A mode already saved on the deployment may still be re-saved; changing to a disallowed one cannot.\n- `CONNECTOR_MANAGED_RESOURCE_READ_ONLY` — This resource is managed by a knowledge base connector and cannot be edited directly. Change it at the source and re-sync, or exclude the document from the connector.\n- `PERMISSION_GROUP_CAPABILITY_BLOCKED` — The caller's permission group does not allow this capability. The message names it; an organization admin controls the group.\n- `INTEGRATION_NOT_ALLOWED` — The integration this request names is outside the workspace's allowed set. An organization admin controls the permission group's integration allowlist, and a self-hosted deployment can narrow it further with ALLOWED_INTEGRATIONS."
456
457
}
457
458
},
458
459
"required": ["code", "message"],
@@ -636,7 +637,8 @@
636
637
"knowledge-base",
637
638
"voice-input",
638
639
"enrichment",
639
-
"voice-output"
640
+
"voice-output",
641
+
"api-tool"
640
642
],
641
643
"description": "Product surface that consumed the credits."
0 commit comments