@lessly/sdk-app 63.0.0 → 63.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_types/gen/client.gen.d.ts +29 -1
- package/dist/_types/gen/manifest.gen.d.ts +1 -1
- package/dist/_types/gen/playground/connect.gen.d.ts +3 -0
- package/dist/_types/gen/playground/index.d.ts +3 -0
- package/dist/_types/gen/playground/queryOptions.gen.d.ts +50 -0
- package/dist/_types/gen/types.gen.d.ts +191 -0
- package/dist/_types/index.d.ts +1 -0
- package/dist/_types/runtime/operations.d.ts +13 -0
- package/dist/chunk-2YAA3AF4.js +10437 -0
- package/dist/chunk-2YAA3AF4.js.map +1 -0
- package/dist/index.cjs +146 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +20 -10300
- package/dist/index.js.map +1 -1
- package/dist/playground/index.cjs +81 -0
- package/dist/playground/index.cjs.map +1 -0
- package/dist/playground/index.d.cts +1 -0
- package/dist/playground/index.d.ts +1 -0
- package/dist/playground/index.js +58 -0
- package/dist/playground/index.js.map +1 -0
- package/docs/recipes/access.md +53 -0
- package/docs/rules.md +22 -0
- package/package.json +12 -2
- package/src/gen/bindings.gen.ts +137 -1
- package/src/gen/client.gen.ts +52 -0
- package/src/gen/manifest.gen.ts +13 -1
- package/src/gen/playground/connect.gen.ts +9 -0
- package/src/gen/playground/index.ts +4 -0
- package/src/gen/playground/queryOptions.gen.ts +86 -0
- package/src/gen/types.gen.ts +226 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../_types/gen/playground/index.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../_types/gen/playground/index.js';
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { wsBindings } from '../chunk-2YAA3AF4.js';
|
|
2
|
+
|
|
3
|
+
// src/gen/playground/queryOptions.gen.ts
|
|
4
|
+
var playgroundAnalyticsOverviewQueryOptions = (sdk, input) => ({
|
|
5
|
+
queryKey: ["playground", "analytics", "overview", input],
|
|
6
|
+
queryFn: () => sdk["playground"]["analytics"]["overview"](input)
|
|
7
|
+
});
|
|
8
|
+
var playgroundBillingEntitlementsQueryOptions = (sdk, input) => ({
|
|
9
|
+
queryKey: ["playground", "billing", "entitlements", input],
|
|
10
|
+
queryFn: () => sdk["playground"]["billing"]["entitlements"](input)
|
|
11
|
+
});
|
|
12
|
+
var playgroundBillingRecordUsageMutationOptions = (sdk) => ({
|
|
13
|
+
mutationKey: ["playground", "billing", "record-usage"],
|
|
14
|
+
mutationFn: (input) => sdk["playground"]["billing"]["record-usage"](input)
|
|
15
|
+
});
|
|
16
|
+
var playgroundClickupCreateTaskMutationOptions = (sdk) => ({
|
|
17
|
+
mutationKey: ["playground", "clickup", "create-task"],
|
|
18
|
+
mutationFn: (input) => sdk["playground"]["clickup"]["create-task"](input)
|
|
19
|
+
});
|
|
20
|
+
var playgroundClickupGetLastWebhookQueryOptions = (sdk, input) => ({
|
|
21
|
+
queryKey: ["playground", "clickup", "get-last-webhook", input],
|
|
22
|
+
queryFn: () => sdk["playground"]["clickup"]["get-last-webhook"](input)
|
|
23
|
+
});
|
|
24
|
+
var playgroundClickupGetOverviewQueryOptions = (sdk, input) => ({
|
|
25
|
+
queryKey: ["playground", "clickup", "get-overview", input],
|
|
26
|
+
queryFn: () => sdk["playground"]["clickup"]["get-overview"](input)
|
|
27
|
+
});
|
|
28
|
+
var playgroundGdriveGetLastChangeQueryOptions = (sdk, input) => ({
|
|
29
|
+
queryKey: ["playground", "gdrive", "get-last-change", input],
|
|
30
|
+
queryFn: () => sdk["playground"]["gdrive"]["get-last-change"](input)
|
|
31
|
+
});
|
|
32
|
+
var playgroundGdriveReadFileQueryOptions = (sdk, input) => ({
|
|
33
|
+
queryKey: ["playground", "gdrive", "read-file", input],
|
|
34
|
+
queryFn: () => sdk["playground"]["gdrive"]["read-file"](input)
|
|
35
|
+
});
|
|
36
|
+
var playgroundGoogleadsReadCustomerQueryOptions = (sdk, input) => ({
|
|
37
|
+
queryKey: ["playground", "googleads", "read-customer", input],
|
|
38
|
+
queryFn: () => sdk["playground"]["googleads"]["read-customer"](input)
|
|
39
|
+
});
|
|
40
|
+
var playgroundLifecycleGetStateQueryOptions = (sdk, input) => ({
|
|
41
|
+
queryKey: ["playground", "lifecycle", "get-state", input],
|
|
42
|
+
queryFn: () => sdk["playground"]["lifecycle"]["get-state"](input)
|
|
43
|
+
});
|
|
44
|
+
var playgroundLifecycleListEventsQueryOptions = (sdk, input) => ({
|
|
45
|
+
queryKey: ["playground", "lifecycle", "list-events", input],
|
|
46
|
+
queryFn: () => sdk["playground"]["lifecycle"]["list-events"](input)
|
|
47
|
+
});
|
|
48
|
+
var playgroundWebhookGetLastQueryOptions = (sdk, input) => ({
|
|
49
|
+
queryKey: ["playground", "webhook", "get-last", input],
|
|
50
|
+
queryFn: () => sdk["playground"]["webhook"]["get-last"](input)
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// src/gen/playground/connect.gen.ts
|
|
54
|
+
var playgroundWsEchoConnect = (sdk, input) => sdk.openStream(wsBindings["playground"]["ws"]["echo"], input);
|
|
55
|
+
|
|
56
|
+
export { playgroundAnalyticsOverviewQueryOptions, playgroundBillingEntitlementsQueryOptions, playgroundBillingRecordUsageMutationOptions, playgroundClickupCreateTaskMutationOptions, playgroundClickupGetLastWebhookQueryOptions, playgroundClickupGetOverviewQueryOptions, playgroundGdriveGetLastChangeQueryOptions, playgroundGdriveReadFileQueryOptions, playgroundGoogleadsReadCustomerQueryOptions, playgroundLifecycleGetStateQueryOptions, playgroundLifecycleListEventsQueryOptions, playgroundWebhookGetLastQueryOptions, playgroundWsEchoConnect };
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
58
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/gen/playground/queryOptions.gen.ts","../../src/gen/playground/connect.gen.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// AUTOGENERATED by scripts/generate.ts — do not edit.\nimport type { GeneratedClient } from '../client.gen';\nimport type {\n PlaygroundAnalyticsOverviewInput,\n PlaygroundAnalyticsOverviewOutput,\n PlaygroundBillingEntitlementsInput,\n PlaygroundBillingEntitlementsOutput,\n PlaygroundBillingRecordUsageInput,\n PlaygroundClickupCreateTaskInput,\n PlaygroundClickupGetLastWebhookInput,\n PlaygroundClickupGetLastWebhookOutput,\n PlaygroundClickupGetOverviewInput,\n PlaygroundClickupGetOverviewOutput,\n PlaygroundGdriveGetLastChangeInput,\n PlaygroundGdriveGetLastChangeOutput,\n PlaygroundGdriveReadFileInput,\n PlaygroundGdriveReadFileOutput,\n PlaygroundGoogleadsReadCustomerInput,\n PlaygroundGoogleadsReadCustomerOutput,\n PlaygroundLifecycleGetStateInput,\n PlaygroundLifecycleGetStateOutput,\n PlaygroundLifecycleListEventsInput,\n PlaygroundLifecycleListEventsOutput,\n PlaygroundWebhookGetLastInput,\n PlaygroundWebhookGetLastOutput,\n} from '../types.gen';\n\nexport const playgroundAnalyticsOverviewQueryOptions = (sdk: GeneratedClient, input: PlaygroundAnalyticsOverviewInput) => ({\n queryKey: ['playground', 'analytics', 'overview', input] as const,\n queryFn: () => sdk['playground']['analytics']['overview'](input),\n});\n\nexport const playgroundBillingEntitlementsQueryOptions = (sdk: GeneratedClient, input: PlaygroundBillingEntitlementsInput) => ({\n queryKey: ['playground', 'billing', 'entitlements', input] as const,\n queryFn: () => sdk['playground']['billing']['entitlements'](input),\n});\n\nexport const playgroundBillingRecordUsageMutationOptions = (sdk: GeneratedClient) => ({\n mutationKey: ['playground', 'billing', 'record-usage'],\n mutationFn: (input: PlaygroundBillingRecordUsageInput) => sdk['playground']['billing']['record-usage'](input),\n});\n\nexport const playgroundClickupCreateTaskMutationOptions = (sdk: GeneratedClient) => ({\n mutationKey: ['playground', 'clickup', 'create-task'],\n mutationFn: (input: PlaygroundClickupCreateTaskInput) => sdk['playground']['clickup']['create-task'](input),\n});\n\nexport const playgroundClickupGetLastWebhookQueryOptions = (sdk: GeneratedClient, input: PlaygroundClickupGetLastWebhookInput) => ({\n queryKey: ['playground', 'clickup', 'get-last-webhook', input] as const,\n queryFn: () => sdk['playground']['clickup']['get-last-webhook'](input),\n});\n\nexport const playgroundClickupGetOverviewQueryOptions = (sdk: GeneratedClient, input: PlaygroundClickupGetOverviewInput) => ({\n queryKey: ['playground', 'clickup', 'get-overview', input] as const,\n queryFn: () => sdk['playground']['clickup']['get-overview'](input),\n});\n\nexport const playgroundGdriveGetLastChangeQueryOptions = (sdk: GeneratedClient, input: PlaygroundGdriveGetLastChangeInput) => ({\n queryKey: ['playground', 'gdrive', 'get-last-change', input] as const,\n queryFn: () => sdk['playground']['gdrive']['get-last-change'](input),\n});\n\nexport const playgroundGdriveReadFileQueryOptions = (sdk: GeneratedClient, input: PlaygroundGdriveReadFileInput) => ({\n queryKey: ['playground', 'gdrive', 'read-file', input] as const,\n queryFn: () => sdk['playground']['gdrive']['read-file'](input),\n});\n\nexport const playgroundGoogleadsReadCustomerQueryOptions = (sdk: GeneratedClient, input: PlaygroundGoogleadsReadCustomerInput) => ({\n queryKey: ['playground', 'googleads', 'read-customer', input] as const,\n queryFn: () => sdk['playground']['googleads']['read-customer'](input),\n});\n\nexport const playgroundLifecycleGetStateQueryOptions = (sdk: GeneratedClient, input: PlaygroundLifecycleGetStateInput) => ({\n queryKey: ['playground', 'lifecycle', 'get-state', input] as const,\n queryFn: () => sdk['playground']['lifecycle']['get-state'](input),\n});\n\nexport const playgroundLifecycleListEventsQueryOptions = (sdk: GeneratedClient, input: PlaygroundLifecycleListEventsInput) => ({\n queryKey: ['playground', 'lifecycle', 'list-events', input] as const,\n queryFn: () => sdk['playground']['lifecycle']['list-events'](input),\n});\n\nexport const playgroundWebhookGetLastQueryOptions = (sdk: GeneratedClient, input: PlaygroundWebhookGetLastInput) => ({\n queryKey: ['playground', 'webhook', 'get-last', input] as const,\n queryFn: () => sdk['playground']['webhook']['get-last'](input),\n});\n","// AUTOGENERATED by scripts/generate.ts — do not edit.\nimport { wsBindings } from '../bindings.gen';\nimport type { LesslyStream, LesslyStreamOpener } from '../../runtime/types';\nimport type {\n PlaygroundWsEchoInput,\n} from '../types.gen';\n\nexport const playgroundWsEchoConnect = (sdk: LesslyStreamOpener, input: PlaygroundWsEchoInput): LesslyStream =>\n sdk.openStream(wsBindings['playground']!['ws']!['echo']!, input as Record<string, unknown>);\n"]}
|
package/docs/recipes/access.md
CHANGED
|
@@ -234,6 +234,32 @@ method cannot drift the day an operation is re-levelled. The accessor path is a
|
|
|
234
234
|
lossy view of the key, so never rebuild `operationKey` from it either — read it
|
|
235
235
|
off the method.
|
|
236
236
|
|
|
237
|
+
### Reading a level without a method
|
|
238
|
+
|
|
239
|
+
Sometimes there is no method to read `op.level` from: an App test double that has
|
|
240
|
+
to answer `can()` for a key, a runtime probe over keys it was handed. The answer
|
|
241
|
+
is still not a literal and still not a table in the App — `@lessly/sdk-app`
|
|
242
|
+
exports the catalog's own level map:
|
|
243
|
+
|
|
244
|
+
```ts
|
|
245
|
+
import { operations, accessReason } from '@lessly/sdk-app';
|
|
246
|
+
|
|
247
|
+
operations['mail_domain_create']; // 'admin'
|
|
248
|
+
operations['analytics_insight_delete']; // 'write'
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
`operations` is `Readonly<Record<string, ToolLevel>>`, keyed by operation key. It
|
|
252
|
+
is regenerated at publish time from the live catalog, so it re-levels with the
|
|
253
|
+
platform exactly as the generated methods do — which is the whole reason it may
|
|
254
|
+
be read where a hand-written table may not (APP-012).
|
|
255
|
+
|
|
256
|
+
A key the map does not carry answers `undefined`, and that is the case
|
|
257
|
+
`accessReason`'s string form already covers: pass the bare key and get
|
|
258
|
+
*"Requires access to `<key>`. Ask an admin of this product."* — no level invented,
|
|
259
|
+
no `level:undefined` in front of a user. Where you do hold a method, keep reading
|
|
260
|
+
`op.level` off it: the map is for the keys no method covers, not a second way to
|
|
261
|
+
do what the method already does.
|
|
262
|
+
|
|
237
263
|
### Your App mounts its own `TooltipProvider`
|
|
238
264
|
|
|
239
265
|
Mount **one `TooltipProvider` per App canvas** — at the root of your remote, as in
|
|
@@ -358,6 +384,17 @@ it is not a judgement call you make silently — write it into your App's spec a
|
|
|
358
384
|
named exception with the reason. An ungated write that nobody wrote down is
|
|
359
385
|
indistinguishable from one nobody thought about.
|
|
360
386
|
|
|
387
|
+
### One reason for a surface-wide gate
|
|
388
|
+
|
|
389
|
+
Where a gate disables a *capability across a whole surface* — dragging any node on
|
|
390
|
+
a canvas, a bulk action over a list or a grid — the reason goes on the control
|
|
391
|
+
that **owns** the capability: the toggle, the toolbar button, the surface header.
|
|
392
|
+
Not on every affected element. Thirty identical focusable wrappers are thirty
|
|
393
|
+
extra tab stops and one sentence repeated thirty times; that is noise, not thirty
|
|
394
|
+
explanations. Keyboard reachability (below) is satisfied on the owning control,
|
|
395
|
+
and the elements themselves just go inert — `draggable={false}`, `readOnly`,
|
|
396
|
+
`disabled` — with no wrapper of their own.
|
|
397
|
+
|
|
361
398
|
### Buttons that touch more than one operation
|
|
362
399
|
|
|
363
400
|
Two shapes, and they gate differently. Get this wrong and you either grey out a
|
|
@@ -405,6 +442,22 @@ const reason = denied
|
|
|
405
442
|
Both shapes hand the method to `accessReason`, so neither needs to know which
|
|
406
443
|
operation it ended up gating on.
|
|
407
444
|
|
|
445
|
+
### Controls that stage a change
|
|
446
|
+
|
|
447
|
+
A control that **stages** a change — it writes nothing itself; the write is sent
|
|
448
|
+
later, by a Save or an Apply — is gated on the operation that staged change will
|
|
449
|
+
eventually send. Two failure modes, and both are common:
|
|
450
|
+
|
|
451
|
+
- **Gated on nothing.** A Viewer rearranges, fills in and stages happily, and
|
|
452
|
+
meets the refusal at Save — somewhere else on the screen, after the work.
|
|
453
|
+
- **Gated twice in a row.** If the entry point that reaches the staging control
|
|
454
|
+
is already gated on that same operation, the staging control does not repeat
|
|
455
|
+
the gate: the reader has met the sentence once and cannot get here without
|
|
456
|
+
passing it.
|
|
457
|
+
|
|
458
|
+
So: gate the staging control on the staged operation *unless* the upstream
|
|
459
|
+
control is already gated on the same one.
|
|
460
|
+
|
|
408
461
|
### Forms with a deferred save
|
|
409
462
|
|
|
410
463
|
A form the reader fills in and *then* saves is the one case where a hint per
|
package/docs/rules.md
CHANGED
|
@@ -382,6 +382,14 @@ The level MUST come from the generated method itself (`op.level`, on the
|
|
|
382
382
|
the App, not a literal, and never a rule of thumb about verbs — `analytics_*_delete`
|
|
383
383
|
is `write` while `mail_domain_create` is `admin`, and only the catalog knows.
|
|
384
384
|
|
|
385
|
+
Where there is no method to read from — a test double, a runtime probe over keys
|
|
386
|
+
it was handed — the App MUST NOT hand-type the level either. `@lessly/sdk-app`
|
|
387
|
+
exports `operations`, the catalog's own level map
|
|
388
|
+
(`Readonly<Record<string, ToolLevel>>`, keyed by operation key), regenerated at
|
|
389
|
+
publish time from the live catalog; read the level from it. A key it does not
|
|
390
|
+
carry answers `undefined`, which is exactly the case `accessReason`'s string form
|
|
391
|
+
covers — no level is invented for it.
|
|
392
|
+
|
|
385
393
|
The gate belongs to the OPERATION, not to a gesture: where a write is reachable
|
|
386
394
|
by several paths (drag and arrow keys, click and Enter, button and hotkey) all of
|
|
387
395
|
them MUST be gated together, or the hole left behind is one only keyboard users
|
|
@@ -389,6 +397,20 @@ find. Implicit form submission is such a path: a disabled submit button does not
|
|
|
389
397
|
reliably stop Enter inside a field, so the `onSubmit` handler MUST be gated (or
|
|
390
398
|
the fields made `readOnly`) rather than the button alone.
|
|
391
399
|
|
|
400
|
+
A gate that disables a capability across a WHOLE SURFACE — dragging any node on
|
|
401
|
+
a canvas, a bulk action over a list or a grid — MUST attach the reason to the
|
|
402
|
+
control that owns the capability (the toggle, the toolbar, the surface header)
|
|
403
|
+
and MUST NOT attach it to every affected element: thirty identical focusable
|
|
404
|
+
wrappers are thirty extra tab stops and one sentence thirty times, not thirty
|
|
405
|
+
explanations. Keyboard reachability is satisfied on the owning control; the
|
|
406
|
+
elements themselves just go inert.
|
|
407
|
+
|
|
408
|
+
A control that STAGES a change — it writes nothing itself, the write is sent
|
|
409
|
+
later by a Save or an Apply — MUST be gated on the operation the staged change
|
|
410
|
+
will send, UNLESS the upstream control that reaches it is already gated on that
|
|
411
|
+
same operation. Never on nothing (the caller does the work and meets the refusal
|
|
412
|
+
later, somewhere else) and never twice in a row.
|
|
413
|
+
|
|
392
414
|
A control that performs SEVERAL operations per click is disabled if ANY of them
|
|
393
415
|
is denied. A DISPATCHER control — one operation per click, selected by a mode or
|
|
394
416
|
a switch — MUST instead be gated on the operation it is about to call, and name
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lessly/sdk-app",
|
|
3
|
-
"version": "63.
|
|
3
|
+
"version": "63.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"engines": {
|
|
@@ -148,6 +148,16 @@
|
|
|
148
148
|
"default": "./dist/organization/index.cjs"
|
|
149
149
|
}
|
|
150
150
|
},
|
|
151
|
+
"./playground": {
|
|
152
|
+
"import": {
|
|
153
|
+
"types": "./dist/playground/index.d.ts",
|
|
154
|
+
"default": "./dist/playground/index.js"
|
|
155
|
+
},
|
|
156
|
+
"require": {
|
|
157
|
+
"types": "./dist/playground/index.d.cts",
|
|
158
|
+
"default": "./dist/playground/index.cjs"
|
|
159
|
+
}
|
|
160
|
+
},
|
|
151
161
|
"./realtime": {
|
|
152
162
|
"import": {
|
|
153
163
|
"types": "./dist/realtime/index.d.ts",
|
|
@@ -199,5 +209,5 @@
|
|
|
199
209
|
}
|
|
200
210
|
}
|
|
201
211
|
},
|
|
202
|
-
"sdkContentHash": "sha256:
|
|
212
|
+
"sdkContentHash": "sha256:965d6441024647f1461d4e50bedeba9d79dca805ea4668ca8c9ecedefc1c0d0a"
|
|
203
213
|
}
|
package/src/gen/bindings.gen.ts
CHANGED
|
@@ -7116,6 +7116,134 @@ export const bindings: BindingsMap = {
|
|
|
7116
7116
|
}
|
|
7117
7117
|
}
|
|
7118
7118
|
},
|
|
7119
|
+
"playground": {
|
|
7120
|
+
"analytics": {
|
|
7121
|
+
"overview": {
|
|
7122
|
+
"level": "read",
|
|
7123
|
+
"method": "POST",
|
|
7124
|
+
"operationKey": "playground_analytics_overview",
|
|
7125
|
+
"params": [
|
|
7126
|
+
{
|
|
7127
|
+
"in": "body",
|
|
7128
|
+
"name": "limit"
|
|
7129
|
+
}
|
|
7130
|
+
],
|
|
7131
|
+
"path": "/playground/analytics/overview",
|
|
7132
|
+
"readOnly": true
|
|
7133
|
+
}
|
|
7134
|
+
},
|
|
7135
|
+
"billing": {
|
|
7136
|
+
"entitlements": {
|
|
7137
|
+
"level": "read",
|
|
7138
|
+
"method": "POST",
|
|
7139
|
+
"operationKey": "playground_billing_entitlements",
|
|
7140
|
+
"path": "/playground/billing/entitlements",
|
|
7141
|
+
"readOnly": true
|
|
7142
|
+
},
|
|
7143
|
+
"record-usage": {
|
|
7144
|
+
"level": "write",
|
|
7145
|
+
"method": "POST",
|
|
7146
|
+
"operationKey": "playground_billing_record-usage",
|
|
7147
|
+
"params": [
|
|
7148
|
+
{
|
|
7149
|
+
"in": "body",
|
|
7150
|
+
"name": "value"
|
|
7151
|
+
}
|
|
7152
|
+
],
|
|
7153
|
+
"path": "/playground/billing/usage",
|
|
7154
|
+
"readOnly": false
|
|
7155
|
+
}
|
|
7156
|
+
},
|
|
7157
|
+
"clickup": {
|
|
7158
|
+
"create-task": {
|
|
7159
|
+
"level": "write",
|
|
7160
|
+
"method": "POST",
|
|
7161
|
+
"operationKey": "playground_clickup_create-task",
|
|
7162
|
+
"params": [
|
|
7163
|
+
{
|
|
7164
|
+
"in": "body",
|
|
7165
|
+
"name": "listId"
|
|
7166
|
+
},
|
|
7167
|
+
{
|
|
7168
|
+
"in": "body",
|
|
7169
|
+
"name": "name"
|
|
7170
|
+
}
|
|
7171
|
+
],
|
|
7172
|
+
"path": "/playground/clickup/tasks",
|
|
7173
|
+
"readOnly": false
|
|
7174
|
+
},
|
|
7175
|
+
"get-last-webhook": {
|
|
7176
|
+
"level": "read",
|
|
7177
|
+
"method": "GET",
|
|
7178
|
+
"operationKey": "playground_clickup_get-last-webhook",
|
|
7179
|
+
"path": "/playground/clickup/webhooks/last",
|
|
7180
|
+
"readOnly": true
|
|
7181
|
+
},
|
|
7182
|
+
"get-overview": {
|
|
7183
|
+
"level": "read",
|
|
7184
|
+
"method": "GET",
|
|
7185
|
+
"operationKey": "playground_clickup_get-overview",
|
|
7186
|
+
"path": "/playground/clickup/overview",
|
|
7187
|
+
"readOnly": true
|
|
7188
|
+
}
|
|
7189
|
+
},
|
|
7190
|
+
"gdrive": {
|
|
7191
|
+
"get-last-change": {
|
|
7192
|
+
"level": "read",
|
|
7193
|
+
"method": "GET",
|
|
7194
|
+
"operationKey": "playground_gdrive_get-last-change",
|
|
7195
|
+
"path": "/playground/gdrive/changes/last",
|
|
7196
|
+
"readOnly": true
|
|
7197
|
+
},
|
|
7198
|
+
"read-file": {
|
|
7199
|
+
"level": "read",
|
|
7200
|
+
"method": "POST",
|
|
7201
|
+
"operationKey": "playground_gdrive_read-file",
|
|
7202
|
+
"params": [
|
|
7203
|
+
{
|
|
7204
|
+
"in": "body",
|
|
7205
|
+
"name": "fileId"
|
|
7206
|
+
}
|
|
7207
|
+
],
|
|
7208
|
+
"path": "/playground/gdrive/file",
|
|
7209
|
+
"readOnly": true
|
|
7210
|
+
}
|
|
7211
|
+
},
|
|
7212
|
+
"googleads": {
|
|
7213
|
+
"read-customer": {
|
|
7214
|
+
"level": "read",
|
|
7215
|
+
"method": "POST",
|
|
7216
|
+
"operationKey": "playground_googleads_read-customer",
|
|
7217
|
+
"path": "/playground/googleads/customer",
|
|
7218
|
+
"readOnly": true
|
|
7219
|
+
}
|
|
7220
|
+
},
|
|
7221
|
+
"lifecycle": {
|
|
7222
|
+
"get-state": {
|
|
7223
|
+
"level": "read",
|
|
7224
|
+
"method": "GET",
|
|
7225
|
+
"operationKey": "playground_lifecycle_get-state",
|
|
7226
|
+
"path": "/playground/lifecycle/state",
|
|
7227
|
+
"readOnly": true
|
|
7228
|
+
},
|
|
7229
|
+
"list-events": {
|
|
7230
|
+
"level": "read",
|
|
7231
|
+
"method": "GET",
|
|
7232
|
+
"operationKey": "playground_lifecycle_list-events",
|
|
7233
|
+
"path": "/playground/lifecycle/events",
|
|
7234
|
+
"readOnly": true
|
|
7235
|
+
}
|
|
7236
|
+
},
|
|
7237
|
+
"webhook": {
|
|
7238
|
+
"get-last": {
|
|
7239
|
+
"level": "read",
|
|
7240
|
+
"method": "GET",
|
|
7241
|
+
"operationKey": "playground_webhook_get-last",
|
|
7242
|
+
"path": "/playground/webhooks/last",
|
|
7243
|
+
"readOnly": true
|
|
7244
|
+
}
|
|
7245
|
+
}
|
|
7246
|
+
},
|
|
7119
7247
|
"realtime": {
|
|
7120
7248
|
"archive": {
|
|
7121
7249
|
"export": {
|
|
@@ -10297,4 +10425,12 @@ export const bindings: BindingsMap = {
|
|
|
10297
10425
|
}
|
|
10298
10426
|
};
|
|
10299
10427
|
|
|
10300
|
-
export const wsBindings: WsBindingsMap = {
|
|
10428
|
+
export const wsBindings: WsBindingsMap = {
|
|
10429
|
+
"playground": {
|
|
10430
|
+
"ws": {
|
|
10431
|
+
"echo": {
|
|
10432
|
+
"path": "/playground/ws/echo"
|
|
10433
|
+
}
|
|
10434
|
+
}
|
|
10435
|
+
}
|
|
10436
|
+
};
|
package/src/gen/client.gen.ts
CHANGED
|
@@ -769,6 +769,30 @@ import type {
|
|
|
769
769
|
OrganizationXInstallOutput,
|
|
770
770
|
OrganizationYoutubeInstallInput,
|
|
771
771
|
OrganizationYoutubeInstallOutput,
|
|
772
|
+
PlaygroundAnalyticsOverviewInput,
|
|
773
|
+
PlaygroundAnalyticsOverviewOutput,
|
|
774
|
+
PlaygroundBillingEntitlementsInput,
|
|
775
|
+
PlaygroundBillingEntitlementsOutput,
|
|
776
|
+
PlaygroundBillingRecordUsageInput,
|
|
777
|
+
PlaygroundBillingRecordUsageOutput,
|
|
778
|
+
PlaygroundClickupCreateTaskInput,
|
|
779
|
+
PlaygroundClickupCreateTaskOutput,
|
|
780
|
+
PlaygroundClickupGetLastWebhookInput,
|
|
781
|
+
PlaygroundClickupGetLastWebhookOutput,
|
|
782
|
+
PlaygroundClickupGetOverviewInput,
|
|
783
|
+
PlaygroundClickupGetOverviewOutput,
|
|
784
|
+
PlaygroundGdriveGetLastChangeInput,
|
|
785
|
+
PlaygroundGdriveGetLastChangeOutput,
|
|
786
|
+
PlaygroundGdriveReadFileInput,
|
|
787
|
+
PlaygroundGdriveReadFileOutput,
|
|
788
|
+
PlaygroundGoogleadsReadCustomerInput,
|
|
789
|
+
PlaygroundGoogleadsReadCustomerOutput,
|
|
790
|
+
PlaygroundLifecycleGetStateInput,
|
|
791
|
+
PlaygroundLifecycleGetStateOutput,
|
|
792
|
+
PlaygroundLifecycleListEventsInput,
|
|
793
|
+
PlaygroundLifecycleListEventsOutput,
|
|
794
|
+
PlaygroundWebhookGetLastInput,
|
|
795
|
+
PlaygroundWebhookGetLastOutput,
|
|
772
796
|
RealtimeArchiveExportInput,
|
|
773
797
|
RealtimeArchiveExportOutput,
|
|
774
798
|
RealtimeArchiveExportStatusInput,
|
|
@@ -1778,6 +1802,34 @@ export interface GeneratedClient {
|
|
|
1778
1802
|
install: ((input: OrganizationYoutubeInstallInput) => Promise<OrganizationYoutubeInstallOutput>) & Operation;
|
|
1779
1803
|
};
|
|
1780
1804
|
};
|
|
1805
|
+
playground: {
|
|
1806
|
+
analytics: {
|
|
1807
|
+
overview: ((input: PlaygroundAnalyticsOverviewInput) => Promise<PlaygroundAnalyticsOverviewOutput>) & Operation;
|
|
1808
|
+
};
|
|
1809
|
+
billing: {
|
|
1810
|
+
entitlements: ((input: PlaygroundBillingEntitlementsInput) => Promise<PlaygroundBillingEntitlementsOutput>) & Operation;
|
|
1811
|
+
'record-usage': ((input: PlaygroundBillingRecordUsageInput) => Promise<PlaygroundBillingRecordUsageOutput>) & Operation;
|
|
1812
|
+
};
|
|
1813
|
+
clickup: {
|
|
1814
|
+
'create-task': ((input: PlaygroundClickupCreateTaskInput) => Promise<PlaygroundClickupCreateTaskOutput>) & Operation;
|
|
1815
|
+
'get-last-webhook': ((input: PlaygroundClickupGetLastWebhookInput) => Promise<PlaygroundClickupGetLastWebhookOutput>) & Operation;
|
|
1816
|
+
'get-overview': ((input: PlaygroundClickupGetOverviewInput) => Promise<PlaygroundClickupGetOverviewOutput>) & Operation;
|
|
1817
|
+
};
|
|
1818
|
+
gdrive: {
|
|
1819
|
+
'get-last-change': ((input: PlaygroundGdriveGetLastChangeInput) => Promise<PlaygroundGdriveGetLastChangeOutput>) & Operation;
|
|
1820
|
+
'read-file': ((input: PlaygroundGdriveReadFileInput) => Promise<PlaygroundGdriveReadFileOutput>) & Operation;
|
|
1821
|
+
};
|
|
1822
|
+
googleads: {
|
|
1823
|
+
'read-customer': ((input: PlaygroundGoogleadsReadCustomerInput) => Promise<PlaygroundGoogleadsReadCustomerOutput>) & Operation;
|
|
1824
|
+
};
|
|
1825
|
+
lifecycle: {
|
|
1826
|
+
'get-state': ((input: PlaygroundLifecycleGetStateInput) => Promise<PlaygroundLifecycleGetStateOutput>) & Operation;
|
|
1827
|
+
'list-events': ((input: PlaygroundLifecycleListEventsInput) => Promise<PlaygroundLifecycleListEventsOutput>) & Operation;
|
|
1828
|
+
};
|
|
1829
|
+
webhook: {
|
|
1830
|
+
'get-last': ((input: PlaygroundWebhookGetLastInput) => Promise<PlaygroundWebhookGetLastOutput>) & Operation;
|
|
1831
|
+
};
|
|
1832
|
+
};
|
|
1781
1833
|
realtime: {
|
|
1782
1834
|
archive: {
|
|
1783
1835
|
export: ((input: RealtimeArchiveExportInput) => Promise<RealtimeArchiveExportOutput>) & Operation;
|
package/src/gen/manifest.gen.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// AUTOGENERATED by scripts/generate.ts — do not edit.
|
|
2
2
|
import type { ToolLevel } from '../runtime/types';
|
|
3
3
|
|
|
4
|
-
export const namespaces = ['analytics', 'brain', 'consent', 'content', 'deployment', 'mail', 'observe', 'organization', 'realtime', 'support', 'tracking', 'users', 'waitlist'] as const;
|
|
4
|
+
export const namespaces = ['analytics', 'brain', 'consent', 'content', 'deployment', 'mail', 'observe', 'organization', 'playground', 'realtime', 'support', 'tracking', 'users', 'waitlist'] as const;
|
|
5
5
|
|
|
6
6
|
export const operations: Record<string, ToolLevel> = {
|
|
7
7
|
'analytics_catalog_get': 'read',
|
|
@@ -388,6 +388,18 @@ export const operations: Record<string, ToolLevel> = {
|
|
|
388
388
|
'organization_support_threads_list': 'read',
|
|
389
389
|
'organization_x_install': 'read',
|
|
390
390
|
'organization_youtube_install': 'read',
|
|
391
|
+
'playground_analytics_overview': 'read',
|
|
392
|
+
'playground_billing_entitlements': 'read',
|
|
393
|
+
'playground_billing_record-usage': 'write',
|
|
394
|
+
'playground_clickup_create-task': 'write',
|
|
395
|
+
'playground_clickup_get-last-webhook': 'read',
|
|
396
|
+
'playground_clickup_get-overview': 'read',
|
|
397
|
+
'playground_gdrive_get-last-change': 'read',
|
|
398
|
+
'playground_gdrive_read-file': 'read',
|
|
399
|
+
'playground_googleads_read-customer': 'read',
|
|
400
|
+
'playground_lifecycle_get-state': 'read',
|
|
401
|
+
'playground_lifecycle_list-events': 'read',
|
|
402
|
+
'playground_webhook_get-last': 'read',
|
|
391
403
|
'realtime_archive_export': 'admin',
|
|
392
404
|
'realtime_archive_export_status': 'read',
|
|
393
405
|
'realtime_archive_get': 'read',
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// AUTOGENERATED by scripts/generate.ts — do not edit.
|
|
2
|
+
import { wsBindings } from '../bindings.gen';
|
|
3
|
+
import type { LesslyStream, LesslyStreamOpener } from '../../runtime/types';
|
|
4
|
+
import type {
|
|
5
|
+
PlaygroundWsEchoInput,
|
|
6
|
+
} from '../types.gen';
|
|
7
|
+
|
|
8
|
+
export const playgroundWsEchoConnect = (sdk: LesslyStreamOpener, input: PlaygroundWsEchoInput): LesslyStream =>
|
|
9
|
+
sdk.openStream(wsBindings['playground']!['ws']!['echo']!, input as Record<string, unknown>);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// AUTOGENERATED by scripts/generate.ts — do not edit.
|
|
2
|
+
export * from './queryOptions.gen';
|
|
3
|
+
export * from './connect.gen';
|
|
4
|
+
export type { PlaygroundAnalyticsOverviewInput, PlaygroundAnalyticsOverviewOutput, PlaygroundBillingEntitlementsInput, PlaygroundBillingEntitlementsOutput, PlaygroundBillingRecordUsageInput, PlaygroundBillingRecordUsageOutput, PlaygroundClickupCreateTaskInput, PlaygroundClickupCreateTaskOutput, PlaygroundClickupGetLastWebhookInput, PlaygroundClickupGetLastWebhookOutput, PlaygroundClickupGetOverviewInput, PlaygroundClickupGetOverviewOutput, PlaygroundGdriveGetLastChangeInput, PlaygroundGdriveGetLastChangeOutput, PlaygroundGdriveReadFileInput, PlaygroundGdriveReadFileOutput, PlaygroundGoogleadsReadCustomerInput, PlaygroundGoogleadsReadCustomerOutput, PlaygroundLifecycleGetStateInput, PlaygroundLifecycleGetStateOutput, PlaygroundLifecycleListEventsInput, PlaygroundLifecycleListEventsOutput, PlaygroundWebhookGetLastInput, PlaygroundWebhookGetLastOutput, PlaygroundWsEchoInput } from '../types.gen';
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// AUTOGENERATED by scripts/generate.ts — do not edit.
|
|
2
|
+
import type { GeneratedClient } from '../client.gen';
|
|
3
|
+
import type {
|
|
4
|
+
PlaygroundAnalyticsOverviewInput,
|
|
5
|
+
PlaygroundAnalyticsOverviewOutput,
|
|
6
|
+
PlaygroundBillingEntitlementsInput,
|
|
7
|
+
PlaygroundBillingEntitlementsOutput,
|
|
8
|
+
PlaygroundBillingRecordUsageInput,
|
|
9
|
+
PlaygroundClickupCreateTaskInput,
|
|
10
|
+
PlaygroundClickupGetLastWebhookInput,
|
|
11
|
+
PlaygroundClickupGetLastWebhookOutput,
|
|
12
|
+
PlaygroundClickupGetOverviewInput,
|
|
13
|
+
PlaygroundClickupGetOverviewOutput,
|
|
14
|
+
PlaygroundGdriveGetLastChangeInput,
|
|
15
|
+
PlaygroundGdriveGetLastChangeOutput,
|
|
16
|
+
PlaygroundGdriveReadFileInput,
|
|
17
|
+
PlaygroundGdriveReadFileOutput,
|
|
18
|
+
PlaygroundGoogleadsReadCustomerInput,
|
|
19
|
+
PlaygroundGoogleadsReadCustomerOutput,
|
|
20
|
+
PlaygroundLifecycleGetStateInput,
|
|
21
|
+
PlaygroundLifecycleGetStateOutput,
|
|
22
|
+
PlaygroundLifecycleListEventsInput,
|
|
23
|
+
PlaygroundLifecycleListEventsOutput,
|
|
24
|
+
PlaygroundWebhookGetLastInput,
|
|
25
|
+
PlaygroundWebhookGetLastOutput,
|
|
26
|
+
} from '../types.gen';
|
|
27
|
+
|
|
28
|
+
export const playgroundAnalyticsOverviewQueryOptions = (sdk: GeneratedClient, input: PlaygroundAnalyticsOverviewInput) => ({
|
|
29
|
+
queryKey: ['playground', 'analytics', 'overview', input] as const,
|
|
30
|
+
queryFn: () => sdk['playground']['analytics']['overview'](input),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export const playgroundBillingEntitlementsQueryOptions = (sdk: GeneratedClient, input: PlaygroundBillingEntitlementsInput) => ({
|
|
34
|
+
queryKey: ['playground', 'billing', 'entitlements', input] as const,
|
|
35
|
+
queryFn: () => sdk['playground']['billing']['entitlements'](input),
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
export const playgroundBillingRecordUsageMutationOptions = (sdk: GeneratedClient) => ({
|
|
39
|
+
mutationKey: ['playground', 'billing', 'record-usage'],
|
|
40
|
+
mutationFn: (input: PlaygroundBillingRecordUsageInput) => sdk['playground']['billing']['record-usage'](input),
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
export const playgroundClickupCreateTaskMutationOptions = (sdk: GeneratedClient) => ({
|
|
44
|
+
mutationKey: ['playground', 'clickup', 'create-task'],
|
|
45
|
+
mutationFn: (input: PlaygroundClickupCreateTaskInput) => sdk['playground']['clickup']['create-task'](input),
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
export const playgroundClickupGetLastWebhookQueryOptions = (sdk: GeneratedClient, input: PlaygroundClickupGetLastWebhookInput) => ({
|
|
49
|
+
queryKey: ['playground', 'clickup', 'get-last-webhook', input] as const,
|
|
50
|
+
queryFn: () => sdk['playground']['clickup']['get-last-webhook'](input),
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
export const playgroundClickupGetOverviewQueryOptions = (sdk: GeneratedClient, input: PlaygroundClickupGetOverviewInput) => ({
|
|
54
|
+
queryKey: ['playground', 'clickup', 'get-overview', input] as const,
|
|
55
|
+
queryFn: () => sdk['playground']['clickup']['get-overview'](input),
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export const playgroundGdriveGetLastChangeQueryOptions = (sdk: GeneratedClient, input: PlaygroundGdriveGetLastChangeInput) => ({
|
|
59
|
+
queryKey: ['playground', 'gdrive', 'get-last-change', input] as const,
|
|
60
|
+
queryFn: () => sdk['playground']['gdrive']['get-last-change'](input),
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
export const playgroundGdriveReadFileQueryOptions = (sdk: GeneratedClient, input: PlaygroundGdriveReadFileInput) => ({
|
|
64
|
+
queryKey: ['playground', 'gdrive', 'read-file', input] as const,
|
|
65
|
+
queryFn: () => sdk['playground']['gdrive']['read-file'](input),
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
export const playgroundGoogleadsReadCustomerQueryOptions = (sdk: GeneratedClient, input: PlaygroundGoogleadsReadCustomerInput) => ({
|
|
69
|
+
queryKey: ['playground', 'googleads', 'read-customer', input] as const,
|
|
70
|
+
queryFn: () => sdk['playground']['googleads']['read-customer'](input),
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
export const playgroundLifecycleGetStateQueryOptions = (sdk: GeneratedClient, input: PlaygroundLifecycleGetStateInput) => ({
|
|
74
|
+
queryKey: ['playground', 'lifecycle', 'get-state', input] as const,
|
|
75
|
+
queryFn: () => sdk['playground']['lifecycle']['get-state'](input),
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
export const playgroundLifecycleListEventsQueryOptions = (sdk: GeneratedClient, input: PlaygroundLifecycleListEventsInput) => ({
|
|
79
|
+
queryKey: ['playground', 'lifecycle', 'list-events', input] as const,
|
|
80
|
+
queryFn: () => sdk['playground']['lifecycle']['list-events'](input),
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
export const playgroundWebhookGetLastQueryOptions = (sdk: GeneratedClient, input: PlaygroundWebhookGetLastInput) => ({
|
|
84
|
+
queryKey: ['playground', 'webhook', 'get-last', input] as const,
|
|
85
|
+
queryFn: () => sdk['playground']['webhook']['get-last'](input),
|
|
86
|
+
});
|