@w6w/embed 0.2.1 → 0.2.19

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 (185) hide show
  1. package/README.md +22 -5
  2. package/dist/ConfirmModal-Pv2-A_3U.js +186 -0
  3. package/dist/ConfirmModal-Pv2-A_3U.js.map +1 -0
  4. package/dist/{CreateFunctionModal-DRsFx-FB.js → CreateFunctionModal-DScxp_LN.js} +25 -25
  5. package/dist/{CreateFunctionModal-DRsFx-FB.js.map → CreateFunctionModal-DScxp_LN.js.map} +1 -1
  6. package/dist/{DocumentFormModal-BExK1V-B.js → DocumentFormModal-Br4s8wmi.js} +5 -5
  7. package/dist/{DocumentFormModal-BExK1V-B.js.map → DocumentFormModal-Br4s8wmi.js.map} +1 -1
  8. package/dist/ImportSpecModal-Cpzp8ndt.js +251 -0
  9. package/dist/ImportSpecModal-Cpzp8ndt.js.map +1 -0
  10. package/dist/ModelRoutesManager-1Ac5wcas.js +345 -0
  11. package/dist/ModelRoutesManager-1Ac5wcas.js.map +1 -0
  12. package/dist/WorkflowEditor-CmhXHRxi.js +1109 -0
  13. package/dist/WorkflowEditor-CmhXHRxi.js.map +1 -0
  14. package/dist/apps-ItBvnWX3.js +92 -0
  15. package/dist/apps-ItBvnWX3.js.map +1 -0
  16. package/dist/{callables-3mFrMVG_.js → callables-tOlflvbl.js} +11 -11
  17. package/dist/{callables-3mFrMVG_.js.map → callables-tOlflvbl.js.map} +1 -1
  18. package/dist/chrome/ConfirmModal.d.ts +4 -1
  19. package/dist/chrome/DangerZone.d.ts +4 -3
  20. package/dist/chrome/ExecutionProfileHeader.d.ts +3 -3
  21. package/dist/chrome/JsonToggle.d.ts +29 -20
  22. package/dist/chrome/Modal.d.ts +3 -1
  23. package/dist/chrome/RightRail.d.ts +6 -1
  24. package/dist/chrome/VersionHistoryModal.d.ts +2 -0
  25. package/dist/chrome/index.d.ts +1 -0
  26. package/dist/chrome/workspace.d.ts +36 -1
  27. package/dist/coerce-input-DFJ4n_wc.js +150 -0
  28. package/dist/coerce-input-DFJ4n_wc.js.map +1 -0
  29. package/dist/connections-CzsCyIxY.js +119 -0
  30. package/dist/connections-CzsCyIxY.js.map +1 -0
  31. package/dist/credentials-Cn92LGhJ.js +171 -0
  32. package/dist/credentials-Cn92LGhJ.js.map +1 -0
  33. package/dist/data-stores-UeQvwVCa.js +170 -0
  34. package/dist/data-stores-UeQvwVCa.js.map +1 -0
  35. package/dist/document-sources-DNmBojx6.js +169 -0
  36. package/dist/document-sources-DNmBojx6.js.map +1 -0
  37. package/dist/draft/use-workflow-draft.d.ts +2 -0
  38. package/dist/draft.mjs +2 -2
  39. package/dist/editor/BindingBanner.d.ts +13 -0
  40. package/dist/editor/CallableEditorFrame.d.ts +7 -0
  41. package/dist/editor/EndpointCards.d.ts +4 -1
  42. package/dist/editor/PublishControl.d.ts +19 -0
  43. package/dist/editor/PublishTooltip.d.ts +7 -0
  44. package/dist/editor/SetupIncompleteBanner.d.ts +12 -0
  45. package/dist/editor/StartingStateModal.d.ts +14 -0
  46. package/dist/editor/TargetSelector.d.ts +15 -0
  47. package/dist/editor/TargetSelector.types.d.ts +2 -0
  48. package/dist/editor/WorkflowSettingsModal.d.ts +6 -1
  49. package/dist/editor/WorkflowVariablesEditor.d.ts +6 -0
  50. package/dist/editor/definition.d.ts +6 -0
  51. package/dist/editor/json-apply.d.ts +29 -0
  52. package/dist/editor/step-problems-feed.d.ts +5 -0
  53. package/dist/editor/types.d.ts +2 -2
  54. package/dist/editor-apps-DkkC7wOQ.js +152 -0
  55. package/dist/editor-apps-DkkC7wOQ.js.map +1 -0
  56. package/dist/editor-tools-BR27RGto.js +1683 -0
  57. package/dist/editor-tools-BR27RGto.js.map +1 -0
  58. package/dist/editor.mjs +1 -1
  59. package/dist/editors.mjs +855 -650
  60. package/dist/editors.mjs.map +1 -1
  61. package/dist/{endpoints-B2ynbZo-.js → endpoints-DSRo1Lc5.js} +113 -107
  62. package/dist/endpoints-DSRo1Lc5.js.map +1 -0
  63. package/dist/fields-DvS8XZFc.js +21 -0
  64. package/dist/fields-DvS8XZFc.js.map +1 -0
  65. package/dist/forms/ModelBudgetsManager.d.ts +9 -0
  66. package/dist/forms/ModelRoutesManager.d.ts +14 -0
  67. package/dist/forms.d.ts +4 -0
  68. package/dist/forms.mjs +611 -212
  69. package/dist/forms.mjs.map +1 -1
  70. package/dist/{rail-settings-XYGToh00.js → import-bindings-EUtxZ9Ti.js} +90 -24
  71. package/dist/import-bindings-EUtxZ9Ti.js.map +1 -0
  72. package/dist/index.mjs +154 -117
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/lib/binding-problems.d.ts +42 -0
  75. package/dist/lib/code-rail.d.ts +4 -2
  76. package/dist/lib/history-query.d.ts +45 -0
  77. package/dist/lib/import-bindings.d.ts +89 -0
  78. package/dist/lib/index.d.ts +4 -0
  79. package/dist/lib/invoke-error.d.ts +1 -0
  80. package/dist/lib/rail-settings.d.ts +1 -1
  81. package/dist/lib/sdk-snippets.d.ts +1 -1
  82. package/dist/lib/setup-incomplete.d.ts +22 -0
  83. package/dist/lib/starting-data.d.ts +31 -0
  84. package/dist/lib/state-panel.d.ts +29 -0
  85. package/dist/lib/target-fields.d.ts +11 -15
  86. package/dist/lib/trigger-preview.d.ts +1 -0
  87. package/dist/lib/workflow-live-run.d.ts +93 -8
  88. package/dist/lib/workflow-nodes.d.ts +5 -0
  89. package/dist/lib/workflow-validity.d.ts +65 -16
  90. package/dist/lib/workflow-variables.d.ts +1 -1
  91. package/dist/lib/workflow-version.d.ts +2 -0
  92. package/dist/lib.mjs +86 -69
  93. package/dist/lists/ConnectionDependents.d.ts +31 -0
  94. package/dist/lists/ConnectionDetail.d.ts +4 -1
  95. package/dist/lists/ConnectionList.d.ts +4 -1
  96. package/dist/lists/CredentialDetail.d.ts +15 -0
  97. package/dist/lists/CredentialList.d.ts +14 -0
  98. package/dist/lists/DataStoreList.d.ts +17 -0
  99. package/dist/lists/DataStoreView.d.ts +19 -0
  100. package/dist/lists/Logs.d.ts +19 -0
  101. package/dist/lists/ModelCatalog.d.ts +12 -0
  102. package/dist/lists/ModelUsage.d.ts +12 -0
  103. package/dist/lists.d.ts +14 -0
  104. package/dist/lists.mjs +1766 -609
  105. package/dist/lists.mjs.map +1 -1
  106. package/dist/models-bAayQPJ_.js +270 -0
  107. package/dist/models-bAayQPJ_.js.map +1 -0
  108. package/dist/{project-context-BiCjv_E3.js → project-context-Tvp-La7A.js} +3 -3
  109. package/dist/{project-context-BiCjv_E3.js.map → project-context-Tvp-La7A.js.map} +1 -1
  110. package/dist/rail/ConnectionsTool.d.ts +2 -0
  111. package/dist/rail/HistoryTool.d.ts +2 -0
  112. package/dist/rail/StartingStateTool.d.ts +2 -0
  113. package/dist/rail/settings-sections.d.ts +4 -1
  114. package/dist/rail.mjs +4 -4
  115. package/dist/repos/agents-studio-agents.d.ts +52 -0
  116. package/dist/repos/agents-studio-assets.d.ts +68 -0
  117. package/dist/repos/connections.d.ts +30 -12
  118. package/dist/repos/constants.d.ts +12 -0
  119. package/dist/repos/credentials.d.ts +83 -0
  120. package/dist/repos/data-stores.d.ts +84 -0
  121. package/dist/repos/endpoints.d.ts +9 -3
  122. package/dist/repos/fields.d.ts +34 -0
  123. package/dist/repos/functions.d.ts +7 -5
  124. package/dist/repos/history.d.ts +9 -0
  125. package/dist/repos/index.d.ts +7 -0
  126. package/dist/repos/models.d.ts +289 -0
  127. package/dist/repos/spec-export.d.ts +3 -3
  128. package/dist/repos/spec-import.d.ts +30 -1
  129. package/dist/repos/step-tests.d.ts +2 -0
  130. package/dist/repos/webhook-listen.d.ts +35 -0
  131. package/dist/repos/workflows.d.ts +105 -2
  132. package/dist/repos.mjs +655 -176
  133. package/dist/repos.mjs.map +1 -1
  134. package/dist/setup-incomplete-BHs3Lpfy.js +199 -0
  135. package/dist/setup-incomplete-BHs3Lpfy.js.map +1 -0
  136. package/dist/{slug-C4ktDPdy.js → slug-BVdgiP_L.js} +64 -60
  137. package/dist/slug-BVdgiP_L.js.map +1 -0
  138. package/dist/{spec-export-Cf3VQSQS.js → spec-export-DGy5ijps.js} +73 -60
  139. package/dist/spec-export-DGy5ijps.js.map +1 -0
  140. package/dist/spec-import-SWOonsNr.js +116 -0
  141. package/dist/spec-import-SWOonsNr.js.map +1 -0
  142. package/dist/{step-tests-CivICmTq.js → step-tests-B4E4W3ly.js} +8 -7
  143. package/dist/step-tests-B4E4W3ly.js.map +1 -0
  144. package/dist/theme-context-E2ZhlXDX.js +6 -0
  145. package/dist/theme-context-E2ZhlXDX.js.map +1 -0
  146. package/dist/theme-context.d.ts +2 -0
  147. package/dist/{use-callable-draft-zHLpcr-b.js → use-callable-draft-DCauHt5o.js} +23 -23
  148. package/dist/{use-callable-draft-zHLpcr-b.js.map → use-callable-draft-DCauHt5o.js.map} +1 -1
  149. package/dist/use-workflow-draft-l3P5KZzw.js +338 -0
  150. package/dist/use-workflow-draft-l3P5KZzw.js.map +1 -0
  151. package/dist/{workflow-blank-DyL3_RUA.js → workflow-blank-DFpGObrn.js} +6 -6
  152. package/dist/{workflow-blank-DyL3_RUA.js.map → workflow-blank-DFpGObrn.js.map} +1 -1
  153. package/dist/workflows-BZN4Hyz1.js +623 -0
  154. package/dist/workflows-BZN4Hyz1.js.map +1 -0
  155. package/package.json +3 -2
  156. package/src/styles.css +155 -7
  157. package/dist/ConfirmModal-RLbZT5_k.js +0 -181
  158. package/dist/ConfirmModal-RLbZT5_k.js.map +0 -1
  159. package/dist/ImportSpecModal-BDQIf6rg.js +0 -136
  160. package/dist/ImportSpecModal-BDQIf6rg.js.map +0 -1
  161. package/dist/WorkflowEditor-DlbVv6Fs.js +0 -854
  162. package/dist/WorkflowEditor-DlbVv6Fs.js.map +0 -1
  163. package/dist/apps-1FNUwbGv.js +0 -77
  164. package/dist/apps-1FNUwbGv.js.map +0 -1
  165. package/dist/coerce-input-BicYr7nc.js +0 -139
  166. package/dist/coerce-input-BicYr7nc.js.map +0 -1
  167. package/dist/connections-CjjYeRqb.js +0 -78
  168. package/dist/connections-CjjYeRqb.js.map +0 -1
  169. package/dist/document-sources-C0grrtdq.js +0 -86
  170. package/dist/document-sources-C0grrtdq.js.map +0 -1
  171. package/dist/editor-apps-BdenSV1o.js +0 -95
  172. package/dist/editor-apps-BdenSV1o.js.map +0 -1
  173. package/dist/editor-tools-RxmY5iyi.js +0 -1279
  174. package/dist/editor-tools-RxmY5iyi.js.map +0 -1
  175. package/dist/endpoints-B2ynbZo-.js.map +0 -1
  176. package/dist/rail-settings-XYGToh00.js.map +0 -1
  177. package/dist/slug-C4ktDPdy.js.map +0 -1
  178. package/dist/spec-export-Cf3VQSQS.js.map +0 -1
  179. package/dist/spec-import-CjmxyZDR.js +0 -465
  180. package/dist/spec-import-CjmxyZDR.js.map +0 -1
  181. package/dist/step-tests-CivICmTq.js.map +0 -1
  182. package/dist/trigger-preview-VPkrryDl.js +0 -120
  183. package/dist/trigger-preview-VPkrryDl.js.map +0 -1
  184. package/dist/use-workflow-draft-DzAyUeA6.js +0 -316
  185. package/dist/use-workflow-draft-DzAyUeA6.js.map +0 -1
@@ -0,0 +1,83 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ import { W6WClient } from '@w6w/sdk';
3
+ import { CredentialDependents, CredentialListFilter, CredentialSummary, CredentialTestResult } from '@w6w/sdk/console';
4
+ export type { CredentialDependents, CredentialListFilter, CredentialSummary, CredentialTestResult, } from '@w6w/sdk/console';
5
+ export declare const credentialsKey: readonly ["credentials"];
6
+ export declare const credentialKey: (id: string) => readonly ["credential", string];
7
+ export declare const credentialDependentsKey: (id: string) => readonly ["credential-dependents", string];
8
+ /**
9
+ * A credential write (rotate, enable/disable, delete) changes what every connection on it
10
+ * reports, so the credential keys AND every cached connection (single and per-app) go stale.
11
+ */
12
+ export declare function invalidateAfterCredentialWrite(qc: QueryClient, id: string): void;
13
+ export declare function listCredentials(client: W6WClient, filter?: CredentialListFilter): Promise<CredentialSummary[]>;
14
+ export declare function getCredential(client: W6WClient, id: string): Promise<CredentialSummary>;
15
+ export declare function createCredential(client: W6WClient, body: {
16
+ name: string;
17
+ contract: string;
18
+ source: Record<string, unknown>;
19
+ }): Promise<CredentialSummary>;
20
+ /** Rename. */
21
+ export declare function updateCredential(client: W6WClient, id: string, body: {
22
+ name: string;
23
+ }): Promise<CredentialSummary>;
24
+ export declare function rotateCredential(client: W6WClient, id: string, body: {
25
+ source: Record<string, unknown>;
26
+ }): Promise<CredentialSummary>;
27
+ export declare function setCredentialStatus(client: W6WClient, id: string, status: "active" | "disabled"): Promise<CredentialSummary>;
28
+ export declare function testCredential(client: W6WClient, id: string): Promise<CredentialTestResult>;
29
+ export declare function getCredentialDependents(client: W6WClient, id: string): Promise<CredentialDependents>;
30
+ export type DeleteCredentialResult = {
31
+ ok: true;
32
+ } | {
33
+ ok: false;
34
+ dependents: CredentialDependents;
35
+ };
36
+ /**
37
+ * Delete. A 409 `credential_in_use` is data — `{ ok: false, dependents }` — not a thrown error;
38
+ * every other failure rejects. There is no `force`: a credential in use is never deleted.
39
+ * Wire (RECONCILE R-11): `{ error: { code, message, dependents: { connections } } }`.
40
+ */
41
+ export declare function deleteCredential(client: W6WClient, id: string): Promise<DeleteCredentialResult>;
42
+ export declare function useCredentialsQuery(filter?: CredentialListFilter): import('@tanstack/react-query').UseQueryResult<NoInfer<CredentialSummary[]>, Error>;
43
+ export declare function useCredentialQuery(id: string): import('@tanstack/react-query').UseQueryResult<NoInfer<CredentialSummary>, Error>;
44
+ export declare function useCredentialDependentsQuery(id: string, enabled?: boolean): import('@tanstack/react-query').UseQueryResult<NoInfer<CredentialDependents>, Error>;
45
+ export declare function useCreateCredentialMutation(): import('@tanstack/react-query').UseMutationResult<CredentialSummary, Error, {
46
+ name: string;
47
+ contract: string;
48
+ source: Record<string, unknown>;
49
+ }, unknown>;
50
+ /** Rename touches only the credential keys: no connection's state changes. */
51
+ export declare function useUpdateCredentialMutation(id: string): import('@tanstack/react-query').UseMutationResult<CredentialSummary, Error, {
52
+ name: string;
53
+ }, unknown>;
54
+ export declare function useRotateCredentialMutation(id: string): import('@tanstack/react-query').UseMutationResult<CredentialSummary, Error, {
55
+ source: Record<string, unknown>;
56
+ }, unknown>;
57
+ export declare function useSetCredentialStatusMutation(id: string): import('@tanstack/react-query').UseMutationResult<CredentialSummary, Error, "active" | "disabled", unknown>;
58
+ export declare function useTestCredentialMutation(id: string): import('@tanstack/react-query').UseMutationResult<CredentialTestResult, Error, void, unknown>;
59
+ export declare function useDeleteCredentialMutation(): import('@tanstack/react-query').UseMutationResult<DeleteCredentialResult, Error, string, unknown>;
60
+ /**
61
+ * The eight optional `W6WApi` credential methods over `client` (this module may not import
62
+ * `@w6w/ui`, so the signatures are checked where they are spread into a `W6WApi`: Studio's
63
+ * facade, and `W6WEmbedProvider`'s bridge). `deleteCredential` rejects on a
64
+ * 409 with the response body attached as `.body` (as `withApiErrorBody` does in the react adapter).
65
+ */
66
+ export declare function credentialUiMethods(client: W6WClient): {
67
+ listCredentials: (filter?: CredentialListFilter) => Promise<CredentialSummary[]>;
68
+ createCredential: (body: {
69
+ name: string;
70
+ contract: string;
71
+ source: Record<string, unknown>;
72
+ }) => Promise<CredentialSummary>;
73
+ getCredential: (id: string) => Promise<CredentialSummary>;
74
+ rotateCredential: (id: string, body: {
75
+ source: Record<string, unknown>;
76
+ }) => Promise<CredentialSummary>;
77
+ setCredentialStatus: (id: string, status: "active" | "disabled") => Promise<CredentialSummary>;
78
+ testCredential: (id: string) => Promise<CredentialTestResult>;
79
+ credentialDependents: (id: string) => Promise<CredentialDependents>;
80
+ deleteCredential: (id: string) => Promise<void>;
81
+ };
82
+ /** Fills ONLY the credential methods that are not functions on `adapter`; keeps the rest. */
83
+ export declare function withCredentialMethods<T extends object>(adapter: T, client: W6WClient): T;
@@ -0,0 +1,84 @@
1
+ import { DataStore, DataStoreCreateInput, DataStoreEntry, DataStoreEntryPage, DataStoreKind, W6WClient } from '@w6w/sdk';
2
+ /** The most requests one "walk every page" read makes (200 stores a page). */
3
+ export declare const DATA_STORE_MAX_PAGES = 10;
4
+ /** Query key for a project's store list. */
5
+ export declare function dataStoresKey(projectId?: string): readonly ["data-stores", string | undefined, "list"];
6
+ /** Query key for one store. */
7
+ export declare function dataStoreKey(id: string, projectId?: string): readonly ["data-stores", string | undefined, "detail", string];
8
+ /** Query key for one store's entries under a key prefix (`""` = no filter). */
9
+ export declare function dataStoreEntriesKey(id: string, projectId: string | undefined, prefix: string): readonly ["data-stores", string | undefined, "entries", string, string];
10
+ /**
11
+ * The project's stores, walked page by page (at most {@link DATA_STORE_MAX_PAGES} requests),
12
+ * server order kept. Hook-less so the ui picker's `listDataStores` seam can call it too.
13
+ */
14
+ export declare function listAllDataStores(client: W6WClient, project: string): Promise<DataStore[]>;
15
+ /** The picker's shape: store names and kinds only. */
16
+ export declare function listDataStores(client: W6WClient, project: string): Promise<{
17
+ name: string;
18
+ kind: DataStoreKind;
19
+ }[]>;
20
+ /**
21
+ * ONE page of the entries of the project's store named `store`, for the ui's `data-store-key`
22
+ * picker (`W6WApi.listDataStoreEntries`): the name is resolved to its id (remembered), then
23
+ * `prefix` is the host's server-side key search and `limit` caps the page. An unknown name is an
24
+ * empty page; a failed entries read forgets the id (renamed or archived) and rethrows.
25
+ */
26
+ export declare function listDataStoreEntries(client: W6WClient, project: string, store: string, opts?: {
27
+ prefix?: string;
28
+ limit?: number;
29
+ signal?: AbortSignal;
30
+ }): Promise<{
31
+ items: {
32
+ key: string;
33
+ value: unknown;
34
+ updatedAt: string;
35
+ }[];
36
+ more: boolean;
37
+ }>;
38
+ export declare function useDataStoresQuery(projectId?: string): import('@tanstack/react-query').UseQueryResult<NoInfer<DataStore[]>, Error>;
39
+ export declare function useDataStoreQuery(id: string, projectId?: string): import('@tanstack/react-query').UseQueryResult<NoInfer<DataStore>, Error>;
40
+ export declare function useEntriesQuery(id: string, projectId: string | undefined, prefix: string): import('@tanstack/react-query').UseInfiniteQueryResult<import('@tanstack/react-query').InfiniteData<DataStoreEntryPage, unknown>, Error>;
41
+ /** One entry by key, read fresh (the conflict prompt's Reload). */
42
+ export declare function getEntry(client: W6WClient, id: string, key: string, project: string): Promise<DataStoreEntry>;
43
+ export declare function useCreateDataStoreMutation(): import('@tanstack/react-query').UseMutationResult<DataStore, Error, {
44
+ input: DataStoreCreateInput;
45
+ project: string;
46
+ }, unknown>;
47
+ export declare function useArchiveDataStoreMutation(): import('@tanstack/react-query').UseMutationResult<void, Error, {
48
+ id: string;
49
+ project: string;
50
+ }, unknown>;
51
+ /** `PUT` one entry. `ifVersion` is the optimistic-concurrency guard; `ttlSeconds` keeps an expiry. */
52
+ export declare function useSetEntryMutation(): import('@tanstack/react-query').UseMutationResult<DataStoreEntry, Error, {
53
+ id: string;
54
+ key: string;
55
+ value: unknown;
56
+ ifVersion?: number;
57
+ ttlSeconds?: number;
58
+ project: string;
59
+ }, unknown>;
60
+ /** `POST` one table row; the server generates the key. */
61
+ export declare function useInsertRowMutation(): import('@tanstack/react-query').UseMutationResult<DataStoreEntry, Error, {
62
+ id: string;
63
+ row: Record<string, unknown>;
64
+ ttlSeconds?: number;
65
+ project: string;
66
+ }, unknown>;
67
+ export declare function useDeleteEntryMutation(): import('@tanstack/react-query').UseMutationResult<void, Error, {
68
+ id: string;
69
+ key: string;
70
+ project: string;
71
+ }, unknown>;
72
+ /** Import CSV text verbatim (`text/csv`). Resolves `{imported}`; a refusal throws an `ApiError`. */
73
+ export declare function useImportCsvMutation(): import('@tanstack/react-query').UseMutationResult<{
74
+ imported: number;
75
+ }, Error, {
76
+ id: string;
77
+ csv: string;
78
+ project: string;
79
+ }, unknown>;
80
+ /** Export a table store as CSV text. Read-only: nothing is invalidated. */
81
+ export declare function useExportCsvMutation(): import('@tanstack/react-query').UseMutationResult<string, Error, {
82
+ id: string;
83
+ project: string;
84
+ }, unknown>;
@@ -1,5 +1,5 @@
1
1
  import { W6WClient } from '@w6w/sdk';
2
- import { EndpointDef as SdkEndpointDef, EndpointSummary as SdkEndpointSummary, EndpointTarget as SdkEndpointTarget } from '@w6w/sdk/console';
2
+ import { EndpointInvokeResult, EndpointDef as SdkEndpointDef, EndpointSummary as SdkEndpointSummary, EndpointTarget as SdkEndpointTarget } from '@w6w/sdk/console';
3
3
  export type { ActionTarget, CallableRef, CallableOnError, ErrorHandlerTarget, EndpointAuthMode, EndpointInput, EndpointInvokeResult, EndpointSecurity, EndpointTarget, ErrorReroute, Exposure, RetryPolicy, } from '@w6w/sdk/console';
4
4
  export { SECRET_MASK } from '@w6w/sdk/console';
5
5
  /** An Endpoint's OWN target: the alias-only `endpoint` arm excluded, mirroring the
@@ -108,8 +108,14 @@ export declare function useGuardedSaveEndpointMutation(): import('@tanstack/reac
108
108
  definition: unknown;
109
109
  ifUnmodifiedSince: string | null;
110
110
  }, unknown>;
111
- export declare function invokeEndpoint(client: W6WClient, id: string, input: Record<string, unknown>): Promise<import('@w6w/sdk/console').EndpointInvokeResult>;
112
- export declare function useInvokeEndpointMutation(): import('@tanstack/react-query').UseMutationResult<import('@w6w/sdk/console').EndpointInvokeResult, Error, {
111
+ /**
112
+ * `POST /endpoints/:id/invoke` through `client.request` (D2). Answers `{ kind, output }`, or a 202
113
+ * `{ kind: "workflow", runId }` (success). `allowUnpublished: true` only when the caller opts in.
114
+ */
115
+ export declare function invokeEndpoint(client: W6WClient, id: string, input: Record<string, unknown>, opts?: {
116
+ allowUnpublished?: boolean;
117
+ }): Promise<EndpointInvokeResult>;
118
+ export declare function useInvokeEndpointMutation(): import('@tanstack/react-query').UseMutationResult<EndpointInvokeResult, Error, {
113
119
  id: string;
114
120
  input: Record<string, unknown>;
115
121
  }, unknown>;
@@ -0,0 +1,34 @@
1
+ import { W6WClient } from '@w6w/sdk';
2
+ /**
3
+ * Dynamic-field resolution — `POST /apps/:id/actions/:key/fields` over `client.request()`.
4
+ * A 424 (the vendor lookup failed) becomes a per-field error result so one bad lookup does not
5
+ * blank the form; every other failure (400/403/404/network/abort) rethrows for the ui to handle.
6
+ */
7
+ /**
8
+ * Structural mirror of ui's `W6WApi.resolveActionFields` shapes (this barrel may not import
9
+ * `@w6w/ui`); the facade/UiBridge assignment typechecks against W6WApi structurally.
10
+ */
11
+ export interface ResolveActionFieldsBody {
12
+ connectionId: string;
13
+ version?: string;
14
+ reason: "init" | "change";
15
+ form: Record<string, unknown>;
16
+ previous?: Record<string, unknown>;
17
+ changed?: string[];
18
+ fields: string[];
19
+ unresolved: string[];
20
+ }
21
+ export interface ResolveActionFieldsResult {
22
+ fields: Record<string, {
23
+ options?: {
24
+ value: string | number;
25
+ label: string;
26
+ description?: string;
27
+ }[];
28
+ error?: string;
29
+ }>;
30
+ }
31
+ export interface ResolveActionFieldsOpts {
32
+ signal?: AbortSignal;
33
+ }
34
+ export declare function resolveActionFields(client: W6WClient, appId: string, actionKey: string, body: ResolveActionFieldsBody, opts?: ResolveActionFieldsOpts): Promise<ResolveActionFieldsResult>;
@@ -58,12 +58,14 @@ export interface FunctionInvokeResult {
58
58
  durationMs?: number;
59
59
  }
60
60
  /**
61
- * `fn_…` ids are already URN-shaped, so the base dispatcher resolves them
62
- * directly — no id translation. `isFunctionRun` narrows the open
63
- * `RunEnvelope`; a `fn_…` URN can only ever resolve to the `function` arm
64
- * server-side, so the `else` branch is defensive, not a real code path.
61
+ * `POST /functions/:id/invoke` through the `client.request` escape hatch (D2: no wrappers change).
62
+ * The route answers the invocation frame `{ kind: "function", output, invocationId, status,
63
+ * durationMs }`. `allowUnpublished: true` is sent ONLY when the caller opts in (the editor's Test
64
+ * invoke hook); every other caller keeps the publish gate, so the key is absent otherwise.
65
65
  */
66
- export declare function invokeFunction(client: W6WClient, id: string, inputs: Record<string, unknown>): Promise<FunctionInvokeResult>;
66
+ export declare function invokeFunction(client: W6WClient, id: string, inputs: Record<string, unknown>, opts?: {
67
+ allowUnpublished?: boolean;
68
+ }): Promise<FunctionInvokeResult>;
67
69
  export declare function useInvokeFunctionMutation(): import('@tanstack/react-query').UseMutationResult<FunctionInvokeResult, Error, {
68
70
  id: string;
69
71
  inputs: Record<string, unknown>;
@@ -22,3 +22,12 @@ export declare function useHasExecutedQuery(callableId: string): {
22
22
  /** One execution's full detail, opened from a list row. Disabled while
23
23
  * `summary` is `null` (no row selected). */
24
24
  export declare function useExecutionDetailQuery(summary: ExecutionSummary | null): import('@tanstack/react-query').UseQueryResult<NoInfer<import('./index.ts').ExecutionDetailData>, Error>;
25
+ /** Run a listed execution again with the same input (`rerunExecution`),
26
+ * resolving to the new execution's row (or `null` if not listed yet). Every
27
+ * history list, stat and probe is invalidated once it settles — a failed
28
+ * re-run is still a new execution — as is the workflow's own run list. */
29
+ export declare function useRerunExecutionMutation(): import('@tanstack/react-query').UseMutationResult<ExecutionSummary | null, Error, ExecutionSummary, unknown>;
30
+ /** Look one execution of a callable up by id (`findExecution`) — what opens the original from a
31
+ * re-run's "Re-run of <id>". A plain function over the embed client, not a query: it runs once per
32
+ * click, and the opened detail has its own query. */
33
+ export declare function useFindExecution(): (callableId: string, id: string) => Promise<ExecutionSummary | null>;
@@ -9,9 +9,11 @@ export * from './workflows.ts';
9
9
  export * from './versions.ts';
10
10
  export * from './step-tests.ts';
11
11
  export * from './history.ts';
12
+ export * from './constants.ts';
12
13
  export * from './vars.ts';
13
14
  export * from './vault.ts';
14
15
  export * from './documents.ts';
16
+ export * from './data-stores.ts';
15
17
  export * from '../lib/history-query.ts';
16
18
  export * from '../lib/workflow-live-run.ts';
17
19
  export * from '../lib/workflow-poll.ts';
@@ -26,7 +28,12 @@ export * from './endpoints.ts';
26
28
  export * from './spec-export.ts';
27
29
  export * from './apps.ts';
28
30
  export * from './connections.ts';
31
+ export * from './credentials.ts';
29
32
  export * from './saved-tests.ts';
30
33
  export * from './reliability.ts';
31
34
  export * from './dashboard.ts';
32
35
  export * from './api-calls.ts';
36
+ export * from './models.ts';
37
+ export * from './agents-studio-agents.ts';
38
+ export * from './agents-studio-assets.ts';
39
+ export * from './fields.ts';
@@ -0,0 +1,289 @@
1
+ import { W6WClient } from '@w6w/sdk';
2
+ export interface ModelRates {
3
+ input?: number;
4
+ output?: number;
5
+ cachedInput?: number;
6
+ cacheWrite?: number;
7
+ perRequest?: number;
8
+ currency?: string;
9
+ }
10
+ export interface ModelRate {
11
+ id: string;
12
+ modelId: string;
13
+ effectiveFrom: string;
14
+ rates: ModelRates;
15
+ source: "seed" | "tenant";
16
+ }
17
+ export interface Model {
18
+ id: string;
19
+ providerAppId: string;
20
+ provider: string;
21
+ nativeId: string;
22
+ displayName: string;
23
+ capabilities: unknown;
24
+ limits: {
25
+ maxInputTokens?: number;
26
+ maxOutputTokens?: number;
27
+ };
28
+ status: "active" | "deprecated" | "blocked";
29
+ source: "discovered" | "manual";
30
+ currentRate: ModelRate | null;
31
+ discoveredAt: string | null;
32
+ createdAt: string;
33
+ updatedAt: string;
34
+ }
35
+ export interface ModelFallback {
36
+ model: string;
37
+ connection: string;
38
+ }
39
+ export interface ModelRoute {
40
+ id: string;
41
+ name: string;
42
+ project: string;
43
+ modelId: string;
44
+ connectionId: string;
45
+ fallbacks: ModelFallback[];
46
+ defaults: Record<string, unknown>;
47
+ status: "active" | "broken";
48
+ createdAt: string;
49
+ updatedAt: string;
50
+ }
51
+ export interface ModelRouteInput {
52
+ name: string;
53
+ model: string;
54
+ connection: string;
55
+ fallbacks?: ModelFallback[];
56
+ defaults?: Record<string, unknown>;
57
+ }
58
+ export type ModelRoutePatch = Partial<Omit<ModelRouteInput, "name">>;
59
+ export interface ModelBudgetLimits {
60
+ requests?: number;
61
+ tokens?: number;
62
+ costMinor?: number;
63
+ currency?: string;
64
+ }
65
+ export interface ModelBudget {
66
+ id: string;
67
+ scopeKind: string;
68
+ scopeId: string | null;
69
+ window: string;
70
+ limits: ModelBudgetLimits;
71
+ onBreach: "block" | "warn";
72
+ }
73
+ export interface ModelBudgetInput {
74
+ scopeKind: string;
75
+ scopeId?: string;
76
+ window: string;
77
+ limits: ModelBudgetLimits;
78
+ onBreach: "block" | "warn";
79
+ }
80
+ export type ModelBudgetPatch = Partial<Omit<ModelBudgetInput, "scopeKind" | "scopeId">>;
81
+ export interface ModelBudgetUsageCounts {
82
+ requests: number;
83
+ tokens: number;
84
+ costMinor: number;
85
+ }
86
+ export interface ModelBudgetUsage {
87
+ budgetId: string;
88
+ window: string;
89
+ windowStart: string;
90
+ limits: ModelBudgetLimits;
91
+ used: ModelBudgetUsageCounts;
92
+ reserved: ModelBudgetUsageCounts;
93
+ }
94
+ export interface ModelCost {
95
+ currency: string;
96
+ amountMinor: number;
97
+ }
98
+ export interface ModelUsageGroup {
99
+ key: string;
100
+ requests: number;
101
+ totalTokens: number;
102
+ cost: ModelCost[];
103
+ }
104
+ export interface ModelUsageTotals {
105
+ requests: number;
106
+ inputTokens: number;
107
+ outputTokens: number;
108
+ cachedInputTokens: number;
109
+ cacheWriteTokens: number;
110
+ totalTokens: number;
111
+ cost: ModelCost[];
112
+ unpriced: number;
113
+ }
114
+ export interface ModelUsageItem {
115
+ id: string;
116
+ routeId: string | null;
117
+ modelId: string;
118
+ connectionId: string;
119
+ provider: string;
120
+ nativeId: string;
121
+ inputTokens: number;
122
+ outputTokens: number;
123
+ cachedInputTokens: number;
124
+ cacheWriteTokens: number;
125
+ totalTokens: number;
126
+ costMinor: number | null;
127
+ currency: string | null;
128
+ rateVersion: string | null;
129
+ durationMs: number;
130
+ ok: boolean;
131
+ errorCode: string | null;
132
+ invocationId: string | null;
133
+ runId: string | null;
134
+ occurredAt: string;
135
+ }
136
+ export interface ModelUsageReport {
137
+ totals: ModelUsageTotals;
138
+ totalsTruncated?: boolean | null;
139
+ groups?: ModelUsageGroup[];
140
+ items: ModelUsageItem[];
141
+ nextCursor: string | null;
142
+ }
143
+ export interface ModelUsageFilter {
144
+ route?: string;
145
+ model?: string;
146
+ from?: string;
147
+ to?: string;
148
+ groupBy?: "route" | "model" | "day";
149
+ limit?: number;
150
+ cursor?: string;
151
+ }
152
+ export interface ModelCatalogFilter {
153
+ provider?: string;
154
+ status?: string;
155
+ limit?: number;
156
+ cursor?: string;
157
+ }
158
+ export interface ModelCatalogPage {
159
+ models: Model[];
160
+ nextCursor: string | null;
161
+ }
162
+ export declare const modelCatalogKey: (filter?: ModelCatalogFilter) => readonly ["model-catalog", ModelCatalogFilter];
163
+ export declare const modelProvidersKey: readonly ["model-providers"];
164
+ export declare const modelRoutesKey: (projectId?: string) => readonly ["model-routes", string | undefined];
165
+ export declare const modelBudgetsKey: (projectId?: string) => readonly ["model-budgets", string | undefined];
166
+ export declare const modelBudgetUsageKey: (id: string, projectId?: string) => readonly ["model-budget-usage", string, string | undefined];
167
+ export declare const modelUsageKey: (projectId?: string, filter?: ModelUsageFilter) => readonly ["model-usage", string | undefined, ModelUsageFilter];
168
+ export declare function listModelCatalog(client: W6WClient, filter?: ModelCatalogFilter): Promise<ModelCatalogPage>;
169
+ /** One row of `GET /models/providers` — the descriptor the model pickers are driven by. */
170
+ export interface ModelProviderRow {
171
+ appId: string;
172
+ provider: string | null;
173
+ installed: boolean;
174
+ designation?: {
175
+ modelTypes: string[];
176
+ modelFamilies?: string[];
177
+ } | null;
178
+ operations?: {
179
+ discover: {
180
+ supported: boolean;
181
+ reason?: string;
182
+ };
183
+ complete: {
184
+ supported: boolean;
185
+ reason?: string;
186
+ features?: Partial<Record<ModelFeature, ModelFeatureState>>;
187
+ };
188
+ };
189
+ /** A2 (optional): the bridge adapter serving this app; `null` = none. */
190
+ adapter?: {
191
+ provider: string;
192
+ contractVersion: number;
193
+ } | null;
194
+ /** A2 (optional): why this app cannot serve the caller right now. */
195
+ reasons?: ModelProviderReason[];
196
+ }
197
+ export type ModelFeature = "toolCalls" | "structuredOutput" | "streaming";
198
+ export type ModelFeatureState = "supported" | "unsupported" | "unknown";
199
+ export type ModelProviderReasonCode = "not_installed" | "no_adapter" | "not_entitled" | "no_connection";
200
+ export interface ModelProviderReason {
201
+ code: ModelProviderReasonCode;
202
+ message: string;
203
+ }
204
+ export interface CompleteSupport {
205
+ supported: boolean;
206
+ features: Partial<Record<ModelFeature, ModelFeatureState>>;
207
+ reasons: ModelProviderReason[];
208
+ }
209
+ /**
210
+ * THE support policy for `operations.complete`. Unsupported when the descriptor says so or the
211
+ * row names no adapter (`adapter: null`); a pre-A2 row (no `adapter`/`features`/`reasons`) falls
212
+ * back to `operations.complete.supported`. Unsupported rows always carry a reason.
213
+ */
214
+ export declare function completeSupport(row: ModelProviderRow): CompleteSupport;
215
+ /** Follow `nextCursor` until null (or `maxPages`), concatenating `models`. */
216
+ export declare function loadAllModelCatalogPages(fetchPage: (cursor?: string) => Promise<ModelCatalogPage>, opts?: {
217
+ maxPages?: number;
218
+ }): Promise<{
219
+ models: Model[];
220
+ truncated: boolean;
221
+ }>;
222
+ export type ModelOperation = "discover" | "complete";
223
+ export interface ConnectionChoice {
224
+ id: string;
225
+ appId: string;
226
+ displayName: string;
227
+ /** Present only when the descriptor says the operation is unsupported for this provider. */
228
+ disabledReason?: string;
229
+ }
230
+ export declare function listModelProviders(client: W6WClient): Promise<ModelProviderRow[]>;
231
+ /**
232
+ * The connections a model picker may offer for `operation`, decided by the descriptor alone:
233
+ * a connection whose app has no designated provider row never appears (an `ai`-category app is
234
+ * not a provider); a designated row whose `discover` is unsupported appears disabled with the
235
+ * descriptor's reason; for `complete` the shared `completeSupport` policy decides (unsupported => disabled, never selectable).
236
+ */
237
+ export declare function connectionChoices<C extends {
238
+ id: string;
239
+ appId: string;
240
+ displayName: string;
241
+ }>(connections: C[], providers: ModelProviderRow[], operation: ModelOperation): ConnectionChoice[];
242
+ /** The server answers fallbacks as `{modelId, connectionId}`; the editor works in `{model, connection}`. */
243
+ export declare function normaliseRoute(r: ModelRoute): ModelRoute;
244
+ export declare function listModelRoutes(client: W6WClient, project: string): Promise<ModelRoute[]>;
245
+ export declare function createModelRoute(client: W6WClient, project: string, input: ModelRouteInput): Promise<ModelRoute>;
246
+ export declare function updateModelRoute(client: W6WClient, project: string, name: string, patch: ModelRoutePatch): Promise<ModelRoute>;
247
+ export declare function deleteModelRoute(client: W6WClient, project: string, name: string): Promise<void>;
248
+ export declare function listModelBudgets(client: W6WClient, project: string): Promise<ModelBudget[]>;
249
+ export declare function createModelBudget(client: W6WClient, project: string, input: ModelBudgetInput): Promise<ModelBudget>;
250
+ export declare function updateModelBudget(client: W6WClient, project: string, id: string, patch: ModelBudgetPatch): Promise<ModelBudget>;
251
+ export declare function deleteModelBudget(client: W6WClient, project: string, id: string): Promise<void>;
252
+ export declare function getModelBudgetUsage(client: W6WClient, project: string, id: string): Promise<ModelBudgetUsage>;
253
+ export declare function getModelUsage(client: W6WClient, project: string, filter?: ModelUsageFilter): Promise<ModelUsageReport>;
254
+ export declare function useModelCatalogQuery(filter?: ModelCatalogFilter): import('@tanstack/react-query').UseQueryResult<NoInfer<ModelCatalogPage>, Error>;
255
+ export declare function useAllModelCatalogQuery(filter?: Omit<ModelCatalogFilter, "cursor">): import('@tanstack/react-query').UseQueryResult<NoInfer<{
256
+ models: Model[];
257
+ truncated: boolean;
258
+ }>, Error>;
259
+ export declare function useModelProvidersQuery(): import('@tanstack/react-query').UseQueryResult<NoInfer<ModelProviderRow[]>, Error>;
260
+ export declare function useModelRoutesQuery(projectId?: string): import('@tanstack/react-query').UseQueryResult<NoInfer<ModelRoute[]>, Error>;
261
+ export declare function useModelBudgetsQuery(projectId?: string): import('@tanstack/react-query').UseQueryResult<NoInfer<ModelBudget[]>, Error>;
262
+ export declare function useModelBudgetUsageQuery(id: string, projectId?: string): import('@tanstack/react-query').UseQueryResult<NoInfer<ModelBudgetUsage>, Error>;
263
+ export declare function useModelUsageQuery(projectId?: string, filter?: ModelUsageFilter): import('@tanstack/react-query').UseQueryResult<NoInfer<ModelUsageReport>, Error>;
264
+ export declare function useCreateModelRouteMutation(): import('@tanstack/react-query').UseMutationResult<ModelRoute, Error, {
265
+ project: string;
266
+ input: ModelRouteInput;
267
+ }, unknown>;
268
+ export declare function useUpdateModelRouteMutation(): import('@tanstack/react-query').UseMutationResult<ModelRoute, Error, {
269
+ project: string;
270
+ name: string;
271
+ patch: ModelRoutePatch;
272
+ }, unknown>;
273
+ export declare function useDeleteModelRouteMutation(): import('@tanstack/react-query').UseMutationResult<void, Error, {
274
+ project: string;
275
+ name: string;
276
+ }, unknown>;
277
+ export declare function useCreateModelBudgetMutation(): import('@tanstack/react-query').UseMutationResult<ModelBudget, Error, {
278
+ project: string;
279
+ input: ModelBudgetInput;
280
+ }, unknown>;
281
+ export declare function useUpdateModelBudgetMutation(): import('@tanstack/react-query').UseMutationResult<ModelBudget, Error, {
282
+ project: string;
283
+ id: string;
284
+ patch: ModelBudgetPatch;
285
+ }, unknown>;
286
+ export declare function useDeleteModelBudgetMutation(): import('@tanstack/react-query').UseMutationResult<void, Error, {
287
+ project: string;
288
+ id: string;
289
+ }, unknown>;
@@ -1,6 +1,6 @@
1
1
  /** The collections that carry a `/spec` export route — `specCollectionForKind`
2
2
  * (`../lib/rail-settings.ts`) is the sole producer of this type's values. */
3
- export type SpecCollection = "functions" | "endpoints";
3
+ export type SpecCollection = "functions" | "endpoints" | "workflows";
4
4
  /**
5
5
  * Mirrors T2.1.1's `SpecDocument`, also mirrored by `repos/spec-import.ts`'s
6
6
  * `SpecImportDocument` for the sibling import route: the portable document a
@@ -16,8 +16,8 @@ export interface SpecDocument {
16
16
  }
17
17
  /**
18
18
  * `GET /<collection>/:id/spec`. `collection` is `null` for a kind the Export
19
- * button never renders on (`specCollectionForKind`'s `workflow`/`connection`
20
- * arms) — passing `null` disables the query regardless of `enabled`, so a
19
+ * button never renders on (`specCollectionForKind`'s `connection`
20
+ * arm) — passing `null` disables the query regardless of `enabled`, so a
21
21
  * caller need not re-derive that guard itself.
22
22
  */
23
23
  export declare function useSpecQuery(collection: SpecCollection | null, id: string, enabled: boolean): import('@tanstack/react-query').UseQueryResult<NoInfer<SpecDocument>, Error>;
@@ -1,3 +1,4 @@
1
+ import { PreviewDependency, Selection, SpecDependency } from '../lib/import-bindings.ts';
1
2
  import { SpecImportListKeys } from '../lib/spec-import-invalidation.ts';
2
3
  /**
3
4
  * Mirrors `T2.1.1`'s `SpecDocument` (`T2.1.1.contract.md:134-141`): the
@@ -30,7 +31,32 @@ export interface SpecImportResult {
30
31
  name?: string;
31
32
  };
32
33
  references: SpecImportReferenceReport[];
34
+ dependencies?: ImportDependencyStatus[];
33
35
  }
36
+ /** IF-1 `POST /spec/preview` result: one entry per dependency, with server options + suggestion. */
37
+ export interface PreviewResult {
38
+ kind: "function" | "endpoint" | "workflow";
39
+ dependencies: PreviewDependency[];
40
+ references?: SpecImportReferenceReport[];
41
+ }
42
+ /** One dependency's outcome in the import result (IF-1 `dependencies` status[]). */
43
+ export interface ImportDependencyStatus {
44
+ key: string;
45
+ kind?: SpecDependency["kind"];
46
+ name?: string;
47
+ status: "bound" | "created" | "unconfigured" | string;
48
+ boundTo?: string;
49
+ reason?: string;
50
+ }
51
+ /** The preview request body: the document plus the host project, sent explicitly. */
52
+ export declare function buildPreviewBody(document: Record<string, unknown>, project: string | undefined): Record<string, unknown>;
53
+ /** The import request body: the preview body plus the FULL selections map (`unconfigured` included). */
54
+ export declare function buildImportBody(document: Record<string, unknown>, project: string | undefined, selections: Record<string, Selection>): Record<string, unknown>;
55
+ /**
56
+ * `POST /spec/preview` (IF-1). Read-only on the server; a failure rejects the mutation and the
57
+ * caller blocks Create — there is NO fallback to posting the document verbatim to `/spec/import`.
58
+ */
59
+ export declare function useSpecPreviewMutation(project: string | undefined): import('@tanstack/react-query').UseMutationResult<PreviewResult, Error, Record<string, unknown>, unknown>;
34
60
  /**
35
61
  * `POST /spec/import`. Success is always `201` — including a partially
36
62
  * resolved import (T2.1.2 §E: "report, never fail silently"). This mutation
@@ -41,4 +67,7 @@ export interface SpecImportResult {
41
67
  * (`listKeys.workflowsKey(project)`), but every caller passes it uniformly rather than branching on kind itself; see
42
68
  * `../lib/spec-import-invalidation.ts` for why the key differs by kind.
43
69
  */
44
- export declare function useImportSpecMutation(project: string | undefined, listKeys: SpecImportListKeys): import('@tanstack/react-query').UseMutationResult<SpecImportResult, Error, Record<string, unknown>, unknown>;
70
+ export declare function useImportSpecMutation(project: string | undefined, listKeys: SpecImportListKeys): import('@tanstack/react-query').UseMutationResult<SpecImportResult, Error, {
71
+ document: Record<string, unknown>;
72
+ selections: Record<string, Selection>;
73
+ }, unknown>;
@@ -2,6 +2,8 @@ import { W6WClient } from '@w6w/sdk';
2
2
  import { StepTest } from '@w6w/sdk/console';
3
3
  export type { StepTest } from '@w6w/sdk/console';
4
4
  export declare const stepTestsKey: (workflowId: string, stepId: string) => readonly ["stepTests", string, string];
5
+ /** The prefix of every {@link stepTestsKey} of one workflow — invalidates all its steps at once. */
6
+ export declare const workflowStepTestsKey: (workflowId: string) => readonly ["stepTests", string];
5
7
  export declare function listStepTests(client: W6WClient, workflowId: string, stepId: string): Promise<StepTest[]>;
6
8
  export declare function saveStepTest(client: W6WClient, workflowId: string, stepId: string, body: {
7
9
  name?: string;