@tai42/api-client 19.3.0 → 21.0.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/README.md +29 -0
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +6 -4
- package/dist/agents.js.map +1 -1
- package/dist/client/agents-client.d.ts.map +1 -1
- package/dist/client/agents-client.js +3 -2
- package/dist/client/agents-client.js.map +1 -1
- package/dist/client/auth-client.d.ts +143 -90
- package/dist/client/auth-client.d.ts.map +1 -1
- package/dist/client/auth-client.js +81 -25
- package/dist/client/auth-client.js.map +1 -1
- package/dist/client/backend-client.d.ts +14 -13
- package/dist/client/backend-client.d.ts.map +1 -1
- package/dist/client/backend-client.js +7 -3
- package/dist/client/backend-client.js.map +1 -1
- package/dist/client/backup-client.d.ts +45 -19
- package/dist/client/backup-client.d.ts.map +1 -1
- package/dist/client/backup-client.js +8 -3
- package/dist/client/backup-client.js.map +1 -1
- package/dist/client/capabilities-client.d.ts +20 -16
- package/dist/client/capabilities-client.d.ts.map +1 -1
- package/dist/client/capabilities-client.js +3 -2
- package/dist/client/capabilities-client.js.map +1 -1
- package/dist/client/channels-client.d.ts.map +1 -1
- package/dist/client/channels-client.js +2 -1
- package/dist/client/channels-client.js.map +1 -1
- package/dist/client/config-client.d.ts +44 -17
- package/dist/client/config-client.d.ts.map +1 -1
- package/dist/client/config-client.js +10 -4
- package/dist/client/config-client.js.map +1 -1
- package/dist/client/connectors-client.d.ts +270 -81
- package/dist/client/connectors-client.d.ts.map +1 -1
- package/dist/client/connectors-client.js +38 -10
- package/dist/client/connectors-client.js.map +1 -1
- package/dist/client/conversations-client.d.ts +440 -86
- package/dist/client/conversations-client.d.ts.map +1 -1
- package/dist/client/conversations-client.js +46 -17
- package/dist/client/conversations-client.js.map +1 -1
- package/dist/client/hooks-client.d.ts +3 -3
- package/dist/client/hooks-client.d.ts.map +1 -1
- package/dist/client/hooks-client.js +12 -7
- package/dist/client/hooks-client.js.map +1 -1
- package/dist/client/index.d.ts +2252 -864
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +10 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/interactions-client.d.ts +19 -14
- package/dist/client/interactions-client.d.ts.map +1 -1
- package/dist/client/interactions-client.js +21 -9
- package/dist/client/interactions-client.js.map +1 -1
- package/dist/client/login-client.d.ts +18 -17
- package/dist/client/login-client.d.ts.map +1 -1
- package/dist/client/login-client.js +8 -4
- package/dist/client/login-client.js.map +1 -1
- package/dist/client/manifest-client.d.ts +276 -105
- package/dist/client/manifest-client.d.ts.map +1 -1
- package/dist/client/manifest-client.js +22 -16
- package/dist/client/manifest-client.js.map +1 -1
- package/dist/client/marketplace-client.d.ts +181 -51
- package/dist/client/marketplace-client.d.ts.map +1 -1
- package/dist/client/marketplace-client.js +23 -12
- package/dist/client/marketplace-client.js.map +1 -1
- package/dist/client/mcp-config-schema-client.d.ts.map +1 -1
- package/dist/client/mcp-config-schema-client.js +2 -1
- package/dist/client/mcp-config-schema-client.js.map +1 -1
- package/dist/client/notifications-client.d.ts +44 -14
- package/dist/client/notifications-client.d.ts.map +1 -1
- package/dist/client/notifications-client.js +2 -1
- package/dist/client/notifications-client.js.map +1 -1
- package/dist/client/observability-client.d.ts +78 -38
- package/dist/client/observability-client.d.ts.map +1 -1
- package/dist/client/observability-client.js +29 -6
- package/dist/client/observability-client.js.map +1 -1
- package/dist/client/plugins-client.d.ts +8 -6
- package/dist/client/plugins-client.d.ts.map +1 -1
- package/dist/client/plugins-client.js +2 -1
- package/dist/client/plugins-client.js.map +1 -1
- package/dist/client/policy-client.d.ts +4 -4
- package/dist/client/policy-client.d.ts.map +1 -1
- package/dist/client/policy-client.js +11 -4
- package/dist/client/policy-client.js.map +1 -1
- package/dist/client/presets-client.d.ts +84 -39
- package/dist/client/presets-client.d.ts.map +1 -1
- package/dist/client/presets-client.js +25 -13
- package/dist/client/presets-client.js.map +1 -1
- package/dist/client/profiles-client.d.ts +40 -33
- package/dist/client/profiles-client.d.ts.map +1 -1
- package/dist/client/profiles-client.js +15 -10
- package/dist/client/profiles-client.js.map +1 -1
- package/dist/client/schedules-client.d.ts +21 -17
- package/dist/client/schedules-client.d.ts.map +1 -1
- package/dist/client/schedules-client.js +8 -5
- package/dist/client/schedules-client.js.map +1 -1
- package/dist/client/settings-schema-client.d.ts +1 -1
- package/dist/client/settings-schema-client.d.ts.map +1 -1
- package/dist/client/settings-schema-client.js +2 -1
- package/dist/client/settings-schema-client.js.map +1 -1
- package/dist/client/states-client.d.ts +215 -87
- package/dist/client/states-client.d.ts.map +1 -1
- package/dist/client/states-client.js +98 -37
- package/dist/client/states-client.js.map +1 -1
- package/dist/client/storage-client.d.ts +5 -5
- package/dist/client/storage-client.d.ts.map +1 -1
- package/dist/client/storage-client.js +24 -12
- package/dist/client/storage-client.js.map +1 -1
- package/dist/client/sub-mcp-client.d.ts +3 -1
- package/dist/client/sub-mcp-client.d.ts.map +1 -1
- package/dist/client/sub-mcp-client.js +9 -4
- package/dist/client/sub-mcp-client.js.map +1 -1
- package/dist/client/system-client.d.ts +2 -2
- package/dist/client/system-client.d.ts.map +1 -1
- package/dist/client/system-client.js +2 -1
- package/dist/client/system-client.js.map +1 -1
- package/dist/client/templates-client.d.ts +65 -6
- package/dist/client/templates-client.d.ts.map +1 -1
- package/dist/client/templates-client.js +25 -7
- package/dist/client/templates-client.js.map +1 -1
- package/dist/client/tool-extensions-client.d.ts +41 -16
- package/dist/client/tool-extensions-client.d.ts.map +1 -1
- package/dist/client/tool-extensions-client.js +6 -4
- package/dist/client/tool-extensions-client.js.map +1 -1
- package/dist/client/tool-meta-client.d.ts +8 -8
- package/dist/client/tool-meta-client.d.ts.map +1 -1
- package/dist/client/tool-meta-client.js +12 -8
- package/dist/client/tool-meta-client.js.map +1 -1
- package/dist/client/tools-client.d.ts +150 -23
- package/dist/client/tools-client.d.ts.map +1 -1
- package/dist/client/tools-client.js +8 -8
- package/dist/client/tools-client.js.map +1 -1
- package/dist/client/trigger-links-client.d.ts +11 -9
- package/dist/client/trigger-links-client.d.ts.map +1 -1
- package/dist/client/trigger-links-client.js +4 -4
- package/dist/client/trigger-links-client.js.map +1 -1
- package/dist/fleet-report.d.ts +21 -5
- package/dist/fleet-report.d.ts.map +1 -1
- package/dist/fleet-report.js +31 -6
- package/dist/fleet-report.js.map +1 -1
- package/dist/generated/api-routes.d.ts +1014 -0
- package/dist/generated/api-routes.d.ts.map +1 -0
- package/dist/generated/api-routes.js +322 -0
- package/dist/generated/api-routes.js.map +1 -0
- package/dist/generated/openapi-schemas.d.ts +12425 -0
- package/dist/generated/openapi-schemas.d.ts.map +1 -0
- package/dist/generated/openapi-schemas.js +671 -0
- package/dist/generated/openapi-schemas.js.map +1 -0
- package/dist/generated/served-schemas.d.ts +6697 -392
- package/dist/generated/served-schemas.d.ts.map +1 -1
- package/dist/generated/served-schemas.js +7061 -46
- package/dist/generated/served-schemas.js.map +1 -1
- package/dist/headers.d.ts +4 -0
- package/dist/headers.d.ts.map +1 -0
- package/dist/headers.js +4 -0
- package/dist/headers.js.map +1 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +4 -3
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/schemas/api-keys.d.ts +14 -12
- package/dist/schemas/api-keys.d.ts.map +1 -1
- package/dist/schemas/api-keys.js +9 -23
- package/dist/schemas/api-keys.js.map +1 -1
- package/dist/schemas/auth-routes.d.ts +34 -29
- package/dist/schemas/auth-routes.d.ts.map +1 -1
- package/dist/schemas/auth-routes.js +22 -27
- package/dist/schemas/auth-routes.js.map +1 -1
- package/dist/schemas/backup.d.ts +157 -36
- package/dist/schemas/backup.d.ts.map +1 -1
- package/dist/schemas/backup.js +27 -26
- package/dist/schemas/backup.js.map +1 -1
- package/dist/schemas/capabilities.d.ts +32 -22
- package/dist/schemas/capabilities.d.ts.map +1 -1
- package/dist/schemas/capabilities.js +15 -40
- package/dist/schemas/capabilities.js.map +1 -1
- package/dist/schemas/channels.d.ts +1 -1
- package/dist/schemas/channels.d.ts.map +1 -1
- package/dist/schemas/channels.js +2 -5
- package/dist/schemas/channels.js.map +1 -1
- package/dist/schemas/config.d.ts.map +1 -1
- package/dist/schemas/config.js +4 -6
- package/dist/schemas/config.js.map +1 -1
- package/dist/schemas/connectors.d.ts +381 -185
- package/dist/schemas/connectors.d.ts.map +1 -1
- package/dist/schemas/connectors.js +54 -101
- package/dist/schemas/connectors.js.map +1 -1
- package/dist/schemas/conversations.d.ts +970 -241
- package/dist/schemas/conversations.d.ts.map +1 -1
- package/dist/schemas/conversations.js +40 -134
- package/dist/schemas/conversations.js.map +1 -1
- package/dist/schemas/extensions.d.ts +9 -6
- package/dist/schemas/extensions.d.ts.map +1 -1
- package/dist/schemas/extensions.js +6 -4
- package/dist/schemas/extensions.js.map +1 -1
- package/dist/schemas/fleet.d.ts +153 -99
- package/dist/schemas/fleet.d.ts.map +1 -1
- package/dist/schemas/fleet.js +41 -51
- package/dist/schemas/fleet.js.map +1 -1
- package/dist/schemas/hooks.d.ts +34 -34
- package/dist/schemas/hooks.d.ts.map +1 -1
- package/dist/schemas/hooks.js +15 -34
- package/dist/schemas/hooks.js.map +1 -1
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/interactions.d.ts +146 -123
- package/dist/schemas/interactions.d.ts.map +1 -1
- package/dist/schemas/interactions.js +44 -129
- package/dist/schemas/interactions.js.map +1 -1
- package/dist/schemas/login.d.ts +36 -37
- package/dist/schemas/login.d.ts.map +1 -1
- package/dist/schemas/login.js +8 -42
- package/dist/schemas/login.js.map +1 -1
- package/dist/schemas/manifest-mcp.d.ts +61 -35
- package/dist/schemas/manifest-mcp.d.ts.map +1 -1
- package/dist/schemas/manifest-mcp.js +13 -19
- package/dist/schemas/manifest-mcp.js.map +1 -1
- package/dist/schemas/marketplace.d.ts +219 -133
- package/dist/schemas/marketplace.d.ts.map +1 -1
- package/dist/schemas/marketplace.js +35 -120
- package/dist/schemas/marketplace.js.map +1 -1
- package/dist/schemas/members.d.ts +161 -0
- package/dist/schemas/members.d.ts.map +1 -0
- package/dist/schemas/members.js +73 -0
- package/dist/schemas/members.js.map +1 -0
- package/dist/schemas/notifications.d.ts +113 -41
- package/dist/schemas/notifications.d.ts.map +1 -1
- package/dist/schemas/notifications.js +9 -35
- package/dist/schemas/notifications.js.map +1 -1
- package/dist/schemas/observability.d.ts +174 -72
- package/dist/schemas/observability.d.ts.map +1 -1
- package/dist/schemas/observability.js +23 -76
- package/dist/schemas/observability.js.map +1 -1
- package/dist/schemas/policy.d.ts +11 -11
- package/dist/schemas/policy.d.ts.map +1 -1
- package/dist/schemas/policy.js +5 -12
- package/dist/schemas/policy.js.map +1 -1
- package/dist/schemas/presets.d.ts +109 -64
- package/dist/schemas/presets.d.ts.map +1 -1
- package/dist/schemas/presets.js +12 -48
- package/dist/schemas/presets.js.map +1 -1
- package/dist/schemas/principals.d.ts +28 -21
- package/dist/schemas/principals.d.ts.map +1 -1
- package/dist/schemas/principals.js +13 -25
- package/dist/schemas/principals.js.map +1 -1
- package/dist/schemas/profiles.d.ts +75 -63
- package/dist/schemas/profiles.d.ts.map +1 -1
- package/dist/schemas/profiles.js +24 -54
- package/dist/schemas/profiles.js.map +1 -1
- package/dist/schemas/roles.d.ts +22 -22
- package/dist/schemas/roles.d.ts.map +1 -1
- package/dist/schemas/roles.js +10 -17
- package/dist/schemas/roles.js.map +1 -1
- package/dist/schemas/schedules.d.ts +21 -15
- package/dist/schemas/schedules.d.ts.map +1 -1
- package/dist/schemas/schedules.js +4 -13
- package/dist/schemas/schedules.js.map +1 -1
- package/dist/schemas/served.d.ts +6373 -194
- package/dist/schemas/served.d.ts.map +1 -1
- package/dist/schemas/served.js +21 -0
- package/dist/schemas/served.js.map +1 -1
- package/dist/schemas/settings-schema.d.ts +1 -1
- package/dist/schemas/settings-schema.d.ts.map +1 -1
- package/dist/schemas/settings-schema.js +17 -19
- package/dist/schemas/settings-schema.js.map +1 -1
- package/dist/schemas/setup.d.ts +6 -6
- package/dist/schemas/setup.d.ts.map +1 -1
- package/dist/schemas/setup.js +2 -11
- package/dist/schemas/setup.js.map +1 -1
- package/dist/schemas/states.d.ts +450 -135
- package/dist/schemas/states.d.ts.map +1 -1
- package/dist/schemas/states.js +76 -140
- package/dist/schemas/states.js.map +1 -1
- package/dist/schemas/storage.d.ts +7 -8
- package/dist/schemas/storage.d.ts.map +1 -1
- package/dist/schemas/storage.js +8 -17
- package/dist/schemas/storage.js.map +1 -1
- package/dist/schemas/studio-plugins.d.ts +24 -18
- package/dist/schemas/studio-plugins.d.ts.map +1 -1
- package/dist/schemas/studio-plugins.js +5 -19
- package/dist/schemas/studio-plugins.js.map +1 -1
- package/dist/schemas/sub-mcp.d.ts +11 -8
- package/dist/schemas/sub-mcp.d.ts.map +1 -1
- package/dist/schemas/sub-mcp.js +10 -19
- package/dist/schemas/sub-mcp.js.map +1 -1
- package/dist/schemas/system-kinds.d.ts +76 -46
- package/dist/schemas/system-kinds.d.ts.map +1 -1
- package/dist/schemas/system-kinds.js +11 -28
- package/dist/schemas/system-kinds.js.map +1 -1
- package/dist/schemas/templates.d.ts +83 -25
- package/dist/schemas/templates.d.ts.map +1 -1
- package/dist/schemas/templates.js +8 -9
- package/dist/schemas/templates.js.map +1 -1
- package/dist/schemas/tool-meta.d.ts +15 -15
- package/dist/schemas/tool-meta.d.ts.map +1 -1
- package/dist/schemas/tool-meta.js +6 -21
- package/dist/schemas/tool-meta.js.map +1 -1
- package/dist/schemas/tools.d.ts +177 -56
- package/dist/schemas/tools.d.ts.map +1 -1
- package/dist/schemas/tools.js +20 -41
- package/dist/schemas/tools.js.map +1 -1
- package/dist/schemas/trigger-links.d.ts +22 -17
- package/dist/schemas/trigger-links.d.ts.map +1 -1
- package/dist/schemas/trigger-links.js +7 -27
- package/dist/schemas/trigger-links.js.map +1 -1
- package/dist/tool-runs.d.ts +175 -54
- package/dist/tool-runs.d.ts.map +1 -1
- package/dist/tool-runs.js +33 -34
- package/dist/tool-runs.js.map +1 -1
- package/package.json +4 -3
- package/src/agents.ts +16 -4
- package/src/client/agents-client.ts +3 -2
- package/src/client/auth-client.ts +134 -34
- package/src/client/backend-client.ts +8 -3
- package/src/client/backup-client.ts +8 -3
- package/src/client/capabilities-client.ts +4 -2
- package/src/client/channels-client.ts +3 -1
- package/src/client/config-client.ts +13 -5
- package/src/client/connectors-client.ts +91 -16
- package/src/client/conversations-client.ts +79 -30
- package/src/client/hooks-client.ts +25 -12
- package/src/client/index.ts +16 -4
- package/src/client/interactions-client.ts +40 -16
- package/src/client/login-client.ts +8 -4
- package/src/client/manifest-client.ts +48 -24
- package/src/client/marketplace-client.ts +23 -12
- package/src/client/mcp-config-schema-client.ts +2 -1
- package/src/client/notifications-client.ts +2 -1
- package/src/client/observability-client.ts +60 -8
- package/src/client/plugins-client.ts +2 -1
- package/src/client/policy-client.ts +24 -9
- package/src/client/presets-client.ts +26 -13
- package/src/client/profiles-client.ts +53 -24
- package/src/client/schedules-client.ts +14 -20
- package/src/client/settings-schema-client.ts +2 -1
- package/src/client/states-client.ts +151 -49
- package/src/client/storage-client.ts +43 -14
- package/src/client/sub-mcp-client.ts +10 -4
- package/src/client/system-client.ts +2 -1
- package/src/client/templates-client.ts +26 -7
- package/src/client/tool-extensions-client.ts +14 -7
- package/src/client/tool-meta-client.ts +46 -21
- package/src/client/tools-client.ts +13 -8
- package/src/client/trigger-links-client.ts +10 -6
- package/src/fleet-report.ts +48 -7
- package/src/generated/api-routes.ts +327 -0
- package/src/generated/openapi-schemas.ts +1508 -0
- package/src/generated/served-schemas.ts +7118 -82
- package/src/headers.ts +4 -0
- package/src/http.ts +4 -3
- package/src/index.ts +52 -10
- package/src/schemas/api-keys.ts +9 -25
- package/src/schemas/auth-routes.ts +27 -28
- package/src/schemas/backup.ts +33 -31
- package/src/schemas/capabilities.ts +16 -39
- package/src/schemas/channels.ts +4 -4
- package/src/schemas/config.ts +6 -6
- package/src/schemas/connectors.ts +61 -102
- package/src/schemas/conversations.ts +43 -133
- package/src/schemas/extensions.ts +7 -4
- package/src/schemas/fleet.ts +51 -51
- package/src/schemas/hooks.ts +18 -37
- package/src/schemas/index.ts +1 -1
- package/src/schemas/interactions.ts +48 -131
- package/src/schemas/login.ts +10 -41
- package/src/schemas/manifest-mcp.ts +13 -19
- package/src/schemas/marketplace.ts +37 -120
- package/src/schemas/members.ts +91 -0
- package/src/schemas/notifications.ts +10 -34
- package/src/schemas/observability.ts +34 -79
- package/src/schemas/policy.ts +5 -12
- package/src/schemas/presets.ts +13 -48
- package/src/schemas/principals.ts +17 -24
- package/src/schemas/profiles.ts +25 -55
- package/src/schemas/roles.ts +11 -17
- package/src/schemas/schedules.ts +4 -15
- package/src/schemas/served.ts +33 -0
- package/src/schemas/settings-schema.ts +18 -23
- package/src/schemas/setup.ts +4 -10
- package/src/schemas/states.ts +88 -139
- package/src/schemas/storage.ts +10 -16
- package/src/schemas/studio-plugins.ts +8 -19
- package/src/schemas/sub-mcp.ts +12 -18
- package/src/schemas/system-kinds.ts +12 -29
- package/src/schemas/templates.ts +8 -10
- package/src/schemas/tool-meta.ts +8 -20
- package/src/schemas/tools.ts +22 -45
- package/src/schemas/trigger-links.ts +8 -26
- package/src/tool-runs.ts +47 -38
- package/dist/client/web-entry-gate-client.d.ts +0 -34
- package/dist/client/web-entry-gate-client.d.ts.map +0 -1
- package/dist/client/web-entry-gate-client.js +0 -25
- package/dist/client/web-entry-gate-client.js.map +0 -1
- package/dist/schemas/web-entry.d.ts +0 -45
- package/dist/schemas/web-entry.d.ts.map +0 -1
- package/dist/schemas/web-entry.js +0 -36
- package/dist/schemas/web-entry.js.map +0 -1
- package/src/client/web-entry-gate-client.ts +0 -45
- package/src/schemas/web-entry.ts +0 -46
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** State declaration, record, template and consumer sub-client. */
|
|
2
|
-
import {
|
|
2
|
+
import { apiRoutes, buildPath } from '../generated/api-routes';
|
|
3
3
|
import * as s from '../schemas';
|
|
4
4
|
import type { Transport } from './transport';
|
|
5
5
|
|
|
@@ -60,17 +60,35 @@ export interface StatePageQuery {
|
|
|
60
60
|
readonly cursor?: string;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
/** The subject-addressed record routes, by what each does to the record. */
|
|
64
|
+
const RECORD_ROUTES = {
|
|
65
|
+
read: apiRoutes.get_api_states_name_records_target_kind_target_name_kind_key.path,
|
|
66
|
+
put: apiRoutes.put_api_states_name_records_target_kind_target_name_kind_key.path,
|
|
67
|
+
patch: apiRoutes.patch_api_states_name_records_target_kind_target_name_kind_key.path,
|
|
68
|
+
erase: apiRoutes.delete_api_states_name_records_target_kind_target_name_kind_key.path,
|
|
69
|
+
deltas: apiRoutes.post_api_states_name_records_target_kind_target_name_kind_key_deltas.path,
|
|
70
|
+
evalJq:
|
|
71
|
+
apiRoutes.get_api_states_name_records_target_kind_target_name_kind_key_template_jq_program.path,
|
|
72
|
+
applyJq:
|
|
73
|
+
apiRoutes.post_api_states_name_records_target_kind_target_name_kind_key_template_jq_program
|
|
74
|
+
.path,
|
|
75
|
+
fold: apiRoutes.post_api_states_name_records_target_kind_target_name_kind_key_fold.path,
|
|
76
|
+
writes: apiRoutes.get_api_states_name_records_target_kind_target_name_kind_key_writes.path,
|
|
77
|
+
} as const;
|
|
78
|
+
|
|
63
79
|
/**
|
|
64
|
-
* The subject-addressed record
|
|
65
|
-
* {target_name}/{kind}/{key}`
|
|
66
|
-
* carrying a slash or a colon never escapes its segment.
|
|
80
|
+
* The path parameters of a subject-addressed record route (`/api/states/{name}/records/
|
|
81
|
+
* {target_kind}/{target_name}/{kind}/{key}`): four path segments, each percent-encoded by
|
|
82
|
+
* `buildPath`, so a key carrying a slash or a colon never escapes its segment.
|
|
67
83
|
*/
|
|
68
|
-
function
|
|
69
|
-
return
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
84
|
+
function stateRecordParams(name: string, subject: StateSubjectRef) {
|
|
85
|
+
return {
|
|
86
|
+
name,
|
|
87
|
+
target_kind: subject.target_kind,
|
|
88
|
+
target_name: subject.target_name,
|
|
89
|
+
kind: subject.kind,
|
|
90
|
+
key: subject.key,
|
|
91
|
+
};
|
|
74
92
|
}
|
|
75
93
|
|
|
76
94
|
/**
|
|
@@ -97,21 +115,25 @@ function stateDeclarationMethods(t: Transport) {
|
|
|
97
115
|
// management population; a single state read composes the declaration with its
|
|
98
116
|
// effective schema, regimes and attachments. Every record route addresses its subject
|
|
99
117
|
// as four percent-encoded path segments (see `stateRecordPath`).
|
|
100
|
-
listStates: (signal?: AbortSignal) =>
|
|
118
|
+
listStates: (signal?: AbortSignal) =>
|
|
119
|
+
req(apiRoutes.get_api_states.path, s.stateList, { signal }),
|
|
101
120
|
getState: (name: string, signal?: AbortSignal) =>
|
|
102
|
-
req(
|
|
121
|
+
req(buildPath(apiRoutes.get_api_states_name.path, { name }), s.stateDetail, { signal }),
|
|
103
122
|
// A plain declaration upsert — no `replace` flag. With records present the server
|
|
104
123
|
// accepts additive schema changes and refuses with a 409 any change that removes or
|
|
105
|
-
// alters an existing field, or a subject-kind removal that would strand records.
|
|
124
|
+
// alters an existing field, or a subject-kind removal that would strand records. The
|
|
125
|
+
// answer is the stored declaration plus the held pending saves it was accepted beside.
|
|
106
126
|
putState: (name: string, body: StateDeclarationBody) =>
|
|
107
|
-
req(
|
|
127
|
+
req(buildPath(apiRoutes.put_api_states_name.path, { name }), s.stateDeclarationSaved, {
|
|
108
128
|
method: 'PUT',
|
|
109
129
|
body,
|
|
110
130
|
}),
|
|
111
131
|
deleteState: (name: string) =>
|
|
112
|
-
req(
|
|
132
|
+
req(buildPath(apiRoutes.delete_api_states_name.path, { name }), s.stateDeleted, {
|
|
133
|
+
method: 'DELETE',
|
|
134
|
+
}),
|
|
113
135
|
getStateStats: (name: string, signal?: AbortSignal) =>
|
|
114
|
-
req(
|
|
136
|
+
req(buildPath(apiRoutes.get_api_states_name_stats.path, { name }), s.stateStats, { signal }),
|
|
115
137
|
};
|
|
116
138
|
}
|
|
117
139
|
|
|
@@ -120,28 +142,32 @@ function stateAttachmentMethods(t: Transport) {
|
|
|
120
142
|
const { req } = t;
|
|
121
143
|
return {
|
|
122
144
|
listStateAttachments: (name: string, signal?: AbortSignal) =>
|
|
123
|
-
req(
|
|
145
|
+
req(
|
|
146
|
+
buildPath(apiRoutes.get_api_states_name_attachments.path, { name }),
|
|
147
|
+
s.stateAttachmentList,
|
|
148
|
+
{ signal },
|
|
149
|
+
),
|
|
124
150
|
getStateAttachment: (name: string, template: string, signal?: AbortSignal) =>
|
|
125
151
|
req(
|
|
126
|
-
|
|
152
|
+
buildPath(apiRoutes.get_api_states_name_attachments_template.path, { name, template }),
|
|
127
153
|
s.stateAttachment,
|
|
128
154
|
{ signal },
|
|
129
155
|
),
|
|
130
156
|
attachStateTemplate: (name: string, template: string, body: StateAttachmentBody) =>
|
|
131
157
|
req(
|
|
132
|
-
|
|
158
|
+
buildPath(apiRoutes.put_api_states_name_attachments_template.path, { name, template }),
|
|
133
159
|
s.stateAttached,
|
|
134
160
|
{ method: 'PUT', body },
|
|
135
161
|
),
|
|
136
162
|
patchStateAttachment: (name: string, template: string, body: StateAttachmentBody) =>
|
|
137
163
|
req(
|
|
138
|
-
|
|
164
|
+
buildPath(apiRoutes.patch_api_states_name_attachments_template.path, { name, template }),
|
|
139
165
|
s.stateAttachmentUpdated,
|
|
140
166
|
{ method: 'PATCH', body },
|
|
141
167
|
),
|
|
142
168
|
detachStateTemplate: (name: string, template: string) =>
|
|
143
169
|
req(
|
|
144
|
-
|
|
170
|
+
buildPath(apiRoutes.delete_api_states_name_attachments_template.path, { name, template }),
|
|
145
171
|
s.stateDetached,
|
|
146
172
|
{ method: 'DELETE' },
|
|
147
173
|
),
|
|
@@ -157,7 +183,7 @@ function stateRecordMethods(t: Transport) {
|
|
|
157
183
|
params: { kind?: string } & StatePageQuery,
|
|
158
184
|
signal?: AbortSignal,
|
|
159
185
|
) =>
|
|
160
|
-
req(
|
|
186
|
+
req(buildPath(apiRoutes.get_api_states_name_subjects.path, { name }), s.subjectPage, {
|
|
161
187
|
signal,
|
|
162
188
|
query: { kind: params.kind, limit: params.limit, cursor: params.cursor },
|
|
163
189
|
}),
|
|
@@ -168,25 +194,39 @@ function stateRecordMethods(t: Transport) {
|
|
|
168
194
|
body: { filters: Record<string, unknown> } & StatePageQuery,
|
|
169
195
|
signal?: AbortSignal,
|
|
170
196
|
) =>
|
|
171
|
-
req(
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
197
|
+
req(
|
|
198
|
+
buildPath(apiRoutes.post_api_states_name_records_search.path, { name }),
|
|
199
|
+
s.recordSearchPage,
|
|
200
|
+
{
|
|
201
|
+
method: 'POST',
|
|
202
|
+
body,
|
|
203
|
+
signal,
|
|
204
|
+
},
|
|
205
|
+
),
|
|
176
206
|
// A subject with no document yet reads as `null` (a 200 `{data: null}`, the record
|
|
177
207
|
// page's Create path) — never an error, so the schema is nullable.
|
|
178
208
|
getStateRecord: (name: string, subject: StateSubjectRef, signal?: AbortSignal) =>
|
|
179
|
-
req(
|
|
209
|
+
req(
|
|
210
|
+
buildPath(RECORD_ROUTES.read, stateRecordParams(name, subject)),
|
|
211
|
+
s.stateRecord.nullable(),
|
|
212
|
+
{ signal },
|
|
213
|
+
),
|
|
180
214
|
putStateRecord: (name: string, subject: StateSubjectRef, data: Record<string, unknown>) =>
|
|
181
|
-
req(
|
|
215
|
+
req(buildPath(RECORD_ROUTES.put, stateRecordParams(name, subject)), s.stateRecord, {
|
|
216
|
+
method: 'PUT',
|
|
217
|
+
body: data,
|
|
218
|
+
}),
|
|
182
219
|
patchStateRecord: (name: string, subject: StateSubjectRef, data: Record<string, unknown>) =>
|
|
183
|
-
req(
|
|
220
|
+
req(buildPath(RECORD_ROUTES.patch, stateRecordParams(name, subject)), s.stateRecord, {
|
|
221
|
+
method: 'PATCH',
|
|
222
|
+
body: data,
|
|
223
|
+
}),
|
|
184
224
|
applyStateRecord: (
|
|
185
225
|
name: string,
|
|
186
226
|
subject: StateSubjectRef,
|
|
187
227
|
ops: readonly Record<string, unknown>[],
|
|
188
228
|
) =>
|
|
189
|
-
req(
|
|
229
|
+
req(buildPath(RECORD_ROUTES.deltas, stateRecordParams(name, subject)), s.applyResult, {
|
|
190
230
|
method: 'POST',
|
|
191
231
|
body: { ops },
|
|
192
232
|
}),
|
|
@@ -208,7 +248,10 @@ function stateRecordOpMethods(t: Transport) {
|
|
|
208
248
|
signal?: AbortSignal,
|
|
209
249
|
) =>
|
|
210
250
|
req(
|
|
211
|
-
|
|
251
|
+
buildPath(RECORD_ROUTES.evalJq, {
|
|
252
|
+
...stateRecordParams(name, subject),
|
|
253
|
+
program: jqName,
|
|
254
|
+
}),
|
|
212
255
|
s.templateJqResult,
|
|
213
256
|
{ signal, query: encodeJqParams(params) },
|
|
214
257
|
),
|
|
@@ -222,12 +265,17 @@ function stateRecordOpMethods(t: Transport) {
|
|
|
222
265
|
body?: { input?: unknown; op_id?: string },
|
|
223
266
|
) =>
|
|
224
267
|
req(
|
|
225
|
-
|
|
268
|
+
buildPath(RECORD_ROUTES.applyJq, {
|
|
269
|
+
...stateRecordParams(name, subject),
|
|
270
|
+
program: jqName,
|
|
271
|
+
}),
|
|
226
272
|
s.templateJqApplyResult,
|
|
227
273
|
{ method: 'POST', body: body ?? {} },
|
|
228
274
|
),
|
|
229
275
|
deleteStateRecord: (name: string, subject: StateSubjectRef) =>
|
|
230
|
-
req(
|
|
276
|
+
req(buildPath(RECORD_ROUTES.erase, stateRecordParams(name, subject)), s.recordErased, {
|
|
277
|
+
method: 'DELETE',
|
|
278
|
+
}),
|
|
231
279
|
// `mode` is required server-side (`switch` drops, `merge` combines); the fold returns
|
|
232
280
|
// a report, not the surviving record.
|
|
233
281
|
foldStateRecord: (
|
|
@@ -236,7 +284,7 @@ function stateRecordOpMethods(t: Transport) {
|
|
|
236
284
|
into: StateSubjectRef,
|
|
237
285
|
mode: 'switch' | 'merge',
|
|
238
286
|
) =>
|
|
239
|
-
req(
|
|
287
|
+
req(buildPath(RECORD_ROUTES.fold, stateRecordParams(name, subject)), s.stateFoldReport, {
|
|
240
288
|
method: 'POST',
|
|
241
289
|
body: { into, mode },
|
|
242
290
|
}),
|
|
@@ -246,12 +294,14 @@ function stateRecordOpMethods(t: Transport) {
|
|
|
246
294
|
params?: StatePageQuery,
|
|
247
295
|
signal?: AbortSignal,
|
|
248
296
|
) =>
|
|
249
|
-
req(
|
|
297
|
+
req(buildPath(RECORD_ROUTES.writes, stateRecordParams(name, subject)), s.writesPage, {
|
|
250
298
|
signal,
|
|
251
299
|
query: { limit: params?.limit, cursor: params?.cursor },
|
|
252
300
|
}),
|
|
253
301
|
stateConsumers: (name: string, signal?: AbortSignal) =>
|
|
254
|
-
req(
|
|
302
|
+
req(buildPath(apiRoutes.get_api_states_name_consumers.path, { name }), s.stateConsumers, {
|
|
303
|
+
signal,
|
|
304
|
+
}),
|
|
255
305
|
};
|
|
256
306
|
}
|
|
257
307
|
|
|
@@ -260,29 +310,81 @@ function stateTemplateMethods(t: Transport) {
|
|
|
260
310
|
const { req } = t;
|
|
261
311
|
return {
|
|
262
312
|
listStateTemplates: (signal?: AbortSignal) =>
|
|
263
|
-
req(
|
|
313
|
+
req(apiRoutes.get_api_state_templates.path, s.stateTemplateList, { signal }),
|
|
264
314
|
getStateTemplate: (name: string, signal?: AbortSignal) =>
|
|
265
|
-
req(
|
|
315
|
+
req(
|
|
316
|
+
buildPath(apiRoutes.get_api_state_templates_name.path, { name }),
|
|
317
|
+
s.stateTemplateDocument,
|
|
318
|
+
{ signal },
|
|
319
|
+
),
|
|
266
320
|
putStateTemplate: (name: string, body: StateTemplateBody, replace?: boolean) =>
|
|
267
|
-
req(
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
321
|
+
req(
|
|
322
|
+
buildPath(apiRoutes.put_api_state_templates_name.path, { name }),
|
|
323
|
+
s.stateTemplateDocument,
|
|
324
|
+
{
|
|
325
|
+
method: 'PUT',
|
|
326
|
+
body,
|
|
327
|
+
query: replace === true ? { replace: 'true' } : undefined,
|
|
328
|
+
},
|
|
329
|
+
),
|
|
272
330
|
deleteStateTemplate: (name: string) =>
|
|
273
|
-
req(
|
|
274
|
-
|
|
275
|
-
|
|
331
|
+
req(
|
|
332
|
+
buildPath(apiRoutes.delete_api_state_templates_name.path, { name }),
|
|
333
|
+
s.stateTemplateDeleted,
|
|
334
|
+
{
|
|
335
|
+
method: 'DELETE',
|
|
336
|
+
},
|
|
337
|
+
),
|
|
276
338
|
pruneStateRetention: () =>
|
|
277
|
-
req(
|
|
339
|
+
req(apiRoutes.post_api_state_retention_prune.path, s.stateRetentionPruned, {
|
|
340
|
+
method: 'POST',
|
|
341
|
+
body: {},
|
|
342
|
+
}),
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Pending saves: the writes and deferred calls a run saved before its reply and that apply after
|
|
348
|
+
* it. A failed one holds its subjects until it is retried (after its cause is repaired) or
|
|
349
|
+
* discarded. `status` `failed` lists the failed ones only; `outstanding` (or none) every one.
|
|
350
|
+
*/
|
|
351
|
+
function statePendingSaveMethods(t: Transport) {
|
|
352
|
+
const { req } = t;
|
|
353
|
+
return {
|
|
354
|
+
listPendingSaves: (
|
|
355
|
+
params: { status?: 'outstanding' | 'failed' } & StatePageQuery,
|
|
356
|
+
signal?: AbortSignal,
|
|
357
|
+
) =>
|
|
358
|
+
req(apiRoutes.get_api_state_pending_saves.path, s.pendingSavesPage, {
|
|
359
|
+
signal,
|
|
360
|
+
query: { status: params.status, limit: params.limit, cursor: params.cursor },
|
|
361
|
+
}),
|
|
362
|
+
retryPendingSave: (id: string) =>
|
|
363
|
+
req(
|
|
364
|
+
buildPath(apiRoutes.post_api_state_pending_saves_id_retry.path, { id }),
|
|
365
|
+
s.pendingSaveRetried,
|
|
366
|
+
{
|
|
367
|
+
method: 'POST',
|
|
368
|
+
body: {},
|
|
369
|
+
},
|
|
370
|
+
),
|
|
371
|
+
discardPendingSave: (id: string) =>
|
|
372
|
+
req(
|
|
373
|
+
buildPath(apiRoutes.delete_api_state_pending_saves_id.path, { id }),
|
|
374
|
+
s.pendingSaveDiscarded,
|
|
375
|
+
{
|
|
376
|
+
method: 'DELETE',
|
|
377
|
+
},
|
|
378
|
+
),
|
|
278
379
|
};
|
|
279
380
|
}
|
|
280
381
|
|
|
281
382
|
export function statesClient(t: Transport) {
|
|
282
383
|
// Declaration emit prepends each spread group's members, so the groups are
|
|
283
384
|
// spread in reverse of their public order to keep the surface declaration →
|
|
284
|
-
// attachments → records → record-ops → templates.
|
|
385
|
+
// attachments → records → record-ops → templates → pending saves.
|
|
285
386
|
return {
|
|
387
|
+
...statePendingSaveMethods(t),
|
|
286
388
|
...stateTemplateMethods(t),
|
|
287
389
|
...stateRecordOpMethods(t),
|
|
288
390
|
...stateRecordMethods(t),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** Storage resource CRUD sub-client. */
|
|
2
|
+
import { apiRoutes, buildPath } from '../generated/api-routes';
|
|
2
3
|
import { apiDownload, isUnsafePathSegment } from '../http';
|
|
3
4
|
import * as s from '../schemas';
|
|
4
5
|
import type { Transport } from './transport';
|
|
@@ -29,12 +30,11 @@ export interface StorageUploadBody {
|
|
|
29
30
|
* route. The server enforces the same relative-path rule; failing fast here keeps a
|
|
30
31
|
* malformed id from ever leaving the client.
|
|
31
32
|
*/
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
if (segments.some(isUnsafePathSegment)) {
|
|
33
|
+
function storagePath(id: string): string {
|
|
34
|
+
if (id.split('/').some(isUnsafePathSegment)) {
|
|
35
35
|
throw new Error("storage path must be a relative path with no empty, '.', or '..' segment");
|
|
36
36
|
}
|
|
37
|
-
return
|
|
37
|
+
return id;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export function storageClient(t: Transport) {
|
|
@@ -43,21 +43,50 @@ export function storageClient(t: Transport) {
|
|
|
43
43
|
// The content store a storage-provider plugin exposes. Dead by default:
|
|
44
44
|
// `getStorageInfo` reports `present: false` (a 200 empty state) and every other
|
|
45
45
|
// door answers a loud 501 when no provider is installed. Ids may be nested
|
|
46
|
-
// paths
|
|
47
|
-
|
|
46
|
+
// paths: `storagePath` refuses a dot or empty segment, and `buildPath` encodes each
|
|
47
|
+
// segment of the route's `{…:path}` parameter with the `/` separators preserved.
|
|
48
|
+
getStorageInfo: (signal?: AbortSignal) =>
|
|
49
|
+
req(apiRoutes.get_api_storage.path, s.storageInfo, { signal }),
|
|
48
50
|
listStorageResources: (signal?: AbortSignal) =>
|
|
49
|
-
req(
|
|
51
|
+
req(apiRoutes.get_api_storage_resources.path, s.storageResourceList, { signal }),
|
|
50
52
|
statStorageResource: (id: string, signal?: AbortSignal) =>
|
|
51
|
-
req(
|
|
53
|
+
req(
|
|
54
|
+
buildPath(apiRoutes.get_api_storage_resources_resource_id_stat.path, {
|
|
55
|
+
resource_id: storagePath(id),
|
|
56
|
+
}),
|
|
57
|
+
s.storageResourceStat,
|
|
58
|
+
{ signal },
|
|
59
|
+
),
|
|
52
60
|
downloadStorageResource: (id: string, signal?: AbortSignal): Promise<Blob> =>
|
|
53
|
-
apiDownload(
|
|
61
|
+
apiDownload(
|
|
62
|
+
config,
|
|
63
|
+
buildPath(apiRoutes.get_api_storage_resources_resource_id_content.path, {
|
|
64
|
+
resource_id: storagePath(id),
|
|
65
|
+
}),
|
|
66
|
+
{ signal },
|
|
67
|
+
),
|
|
54
68
|
uploadStorageResource: (body: StorageUploadBody) =>
|
|
55
|
-
req(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
method: 'DELETE',
|
|
69
|
+
req(apiRoutes.post_api_storage_resources.path, s.storageResourceStored, {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
body,
|
|
59
72
|
}),
|
|
73
|
+
deleteStorageResource: (id: string) =>
|
|
74
|
+
req(
|
|
75
|
+
buildPath(apiRoutes.delete_api_storage_resources_resource_id.path, {
|
|
76
|
+
resource_id: storagePath(id),
|
|
77
|
+
}),
|
|
78
|
+
s.storageResourceDeleted,
|
|
79
|
+
{
|
|
80
|
+
method: 'DELETE',
|
|
81
|
+
},
|
|
82
|
+
),
|
|
60
83
|
deleteStorageDir: (path: string) =>
|
|
61
|
-
req(
|
|
84
|
+
req(
|
|
85
|
+
buildPath(apiRoutes.delete_api_storage_dirs_dir_path.path, { dir_path: storagePath(path) }),
|
|
86
|
+
s.storageDirDeleted,
|
|
87
|
+
{
|
|
88
|
+
method: 'DELETE',
|
|
89
|
+
},
|
|
90
|
+
),
|
|
62
91
|
};
|
|
63
92
|
}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
/** Sub-MCP mount registry sub-client. */
|
|
2
|
-
import {
|
|
2
|
+
import { apiRoutes, buildPath } from '../generated/api-routes';
|
|
3
3
|
import * as s from '../schemas';
|
|
4
4
|
import type { Transport } from './transport';
|
|
5
5
|
|
|
6
6
|
export function subMcpClient(t: Transport) {
|
|
7
7
|
const { req } = t;
|
|
8
8
|
return {
|
|
9
|
-
listSubMcp: (signal?: AbortSignal) =>
|
|
9
|
+
listSubMcp: (signal?: AbortSignal) =>
|
|
10
|
+
req(apiRoutes.get_api_sub_mcp.path, s.subMcpList, { signal }),
|
|
10
11
|
// `transport` is optional at the client boundary (the server defaults it to
|
|
11
12
|
// `http`); when omitted, JSON.stringify drops the undefined key from the body.
|
|
12
13
|
createSubMcp: (slug: string, tools: string[], transport?: string) =>
|
|
13
|
-
req(
|
|
14
|
+
req(apiRoutes.post_api_sub_mcp.path, s.subMcpCreated, {
|
|
15
|
+
method: 'POST',
|
|
16
|
+
body: { slug, tools, transport },
|
|
17
|
+
}),
|
|
14
18
|
deleteSubMcp: (slug: string) =>
|
|
15
|
-
req(
|
|
19
|
+
req(buildPath(apiRoutes.delete_api_sub_mcp_slug.path, { slug }), s.subMcpRemoved, {
|
|
20
|
+
method: 'DELETE',
|
|
21
|
+
}),
|
|
16
22
|
};
|
|
17
23
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** System health and pluggable-kind status sub-client. */
|
|
2
|
+
import { apiRoutes } from '../generated/api-routes';
|
|
2
3
|
import { apiText } from '../http';
|
|
3
4
|
import * as s from '../schemas';
|
|
4
5
|
import type { Transport } from './transport';
|
|
@@ -11,6 +12,6 @@ export function systemClient(t: Transport) {
|
|
|
11
12
|
// The pluggable-kind status table (`GET /api/system/kinds`) — a JSON `{data}`
|
|
12
13
|
// envelope, one row per kind with its active/default/off state.
|
|
13
14
|
getSystemKinds: (signal?: AbortSignal) =>
|
|
14
|
-
req(
|
|
15
|
+
req(apiRoutes.get_api_system_kinds.path, s.kindStatusList, { signal }),
|
|
15
16
|
};
|
|
16
17
|
}
|
|
@@ -1,28 +1,47 @@
|
|
|
1
1
|
/** Prompt-template listing, render and mutation sub-client. */
|
|
2
|
+
import { apiRoutes } from '../generated/api-routes';
|
|
2
3
|
import * as s from '../schemas';
|
|
3
4
|
import type { Transport } from './transport';
|
|
4
5
|
|
|
5
6
|
export function templatesClient(t: Transport) {
|
|
6
7
|
const { req } = t;
|
|
7
8
|
return {
|
|
8
|
-
listTemplates: (signal?: AbortSignal) =>
|
|
9
|
+
listTemplates: (signal?: AbortSignal) =>
|
|
10
|
+
req(apiRoutes.get_api_templates.path, s.templateNames, { signal }),
|
|
9
11
|
getTemplate: (templateId: string) =>
|
|
10
|
-
req(
|
|
12
|
+
req(apiRoutes.post_api_template.path, s.templateDetail, {
|
|
13
|
+
method: 'POST',
|
|
14
|
+
body: { template_id: templateId },
|
|
15
|
+
}),
|
|
11
16
|
uploadTemplate: (path: string, content: string) =>
|
|
12
|
-
req(
|
|
17
|
+
req(apiRoutes.post_api_upload_template.path, s.templateUploaded, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
body: { path, content },
|
|
20
|
+
}),
|
|
13
21
|
deleteTemplate: (path: string) =>
|
|
14
|
-
req(
|
|
22
|
+
req(apiRoutes.post_api_delete_template.path, s.templateDeleted, {
|
|
23
|
+
method: 'POST',
|
|
24
|
+
body: { path },
|
|
25
|
+
}),
|
|
15
26
|
// Delete every stored template under a directory prefix. Unlike the idempotent
|
|
16
27
|
// single delete, the server 404s a prefix matching nothing and 400s the template
|
|
17
28
|
// root; those surface as loud errors, never a faked success.
|
|
18
29
|
deleteTemplateDir: (path: string) =>
|
|
19
|
-
req(
|
|
30
|
+
req(apiRoutes.post_api_delete_template_dir.path, s.templateDirDeleted, {
|
|
31
|
+
method: 'POST',
|
|
32
|
+
body: { path },
|
|
33
|
+
}),
|
|
20
34
|
// Render one authored text — inline `content` OR a stored template `id`, plus its
|
|
21
35
|
// render `kwargs` — and parse the rendered output. The value is the shared
|
|
22
36
|
// `TemplatedText` (exactly one source); the route wraps it under `text`.
|
|
23
37
|
renderTemplate: (text: s.TemplatedText) =>
|
|
24
|
-
req(
|
|
38
|
+
req(apiRoutes.post_api_render_template.path, s.templateRendered, {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
body: { text },
|
|
41
|
+
}),
|
|
25
42
|
clearTemplatesCache: () =>
|
|
26
|
-
req(
|
|
43
|
+
req(apiRoutes.post_api_clear_templates_cache.path, s.templateCacheCleared, {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
}),
|
|
27
46
|
};
|
|
28
47
|
}
|
|
@@ -1,24 +1,31 @@
|
|
|
1
1
|
/** Tool extension listing and authoring sub-client. */
|
|
2
|
-
import {
|
|
2
|
+
import { apiRoutes, buildPath } from '../generated/api-routes';
|
|
3
3
|
import * as s from '../schemas';
|
|
4
4
|
import type { Transport } from './transport';
|
|
5
5
|
|
|
6
6
|
export function toolExtensionsClient(t: Transport) {
|
|
7
7
|
const { req } = t;
|
|
8
8
|
return {
|
|
9
|
-
listExtensions: (signal?: AbortSignal) =>
|
|
9
|
+
listExtensions: (signal?: AbortSignal) =>
|
|
10
|
+
req(apiRoutes.get_api_extensions.path, s.extensions, { signal }),
|
|
10
11
|
// A MANIFEST-provided tool's current combos + the extension catalog. (A preset
|
|
11
12
|
// tool's extensions live on the preset spec, read via `getPreset`.)
|
|
12
13
|
getToolExtensions: (name: string, signal?: AbortSignal) =>
|
|
13
|
-
req(
|
|
14
|
+
req(buildPath(apiRoutes.get_api_tools_name_extensions.path, { name }), s.toolExtensions, {
|
|
15
|
+
signal,
|
|
16
|
+
}),
|
|
14
17
|
// Author ALL of a MANIFEST tool's combos at once (the full lossless list; `[]`
|
|
15
18
|
// clears). Returns the apply result: the local reload (`status` + `env_keys`) plus
|
|
16
19
|
// the mode-wrapped fleet `fanout` of the reload it broadcast, from which the shared
|
|
17
20
|
// fleet-report handler surfaces any failed propagation.
|
|
18
21
|
setToolExtensions: (name: string, combos: readonly s.PresetExtensionElement[][]) =>
|
|
19
|
-
req(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
req(
|
|
23
|
+
buildPath(apiRoutes.post_api_tools_name_extensions.path, { name }),
|
|
24
|
+
s.toolExtensionsApplyResult,
|
|
25
|
+
{
|
|
26
|
+
method: 'POST',
|
|
27
|
+
body: { combos },
|
|
28
|
+
},
|
|
29
|
+
),
|
|
23
30
|
};
|
|
24
31
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Tool-organization overlay (folders and meta) sub-client. */
|
|
2
|
-
import {
|
|
2
|
+
import { apiRoutes, buildPath } from '../generated/api-routes';
|
|
3
3
|
import * as s from '../schemas';
|
|
4
4
|
import type { Transport } from './transport';
|
|
5
5
|
|
|
@@ -28,38 +28,63 @@ export function toolMetaClient(t: Transport) {
|
|
|
28
28
|
return {
|
|
29
29
|
// The folder tree + per-tool overlay rows in one read; the features merge the
|
|
30
30
|
// rows against the live tool list and native tags client-side.
|
|
31
|
-
listToolMeta: (signal?: AbortSignal) =>
|
|
31
|
+
listToolMeta: (signal?: AbortSignal) =>
|
|
32
|
+
req(apiRoutes.get_api_tool_meta.path, s.toolMetaOverlay, { signal }),
|
|
32
33
|
// Merge-patch a tool's overlay row (create it if absent). `patch` carries ONLY
|
|
33
34
|
// the fields to change — a present-null clears, an absent field is untouched,
|
|
34
35
|
// and a present `tags` array replaces the set.
|
|
35
36
|
upsertToolMeta: (toolName: string, patch: ToolMetaPatch) =>
|
|
36
|
-
req(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
req(
|
|
38
|
+
buildPath(apiRoutes.patch_api_tool_meta_tools_tool_name.path, { tool_name: toolName }),
|
|
39
|
+
s.toolMetaRecord,
|
|
40
|
+
{
|
|
41
|
+
method: 'PATCH',
|
|
42
|
+
body: patch,
|
|
43
|
+
},
|
|
44
|
+
),
|
|
40
45
|
deleteToolMeta: (toolName: string) =>
|
|
41
|
-
req(
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
req(
|
|
47
|
+
buildPath(apiRoutes.delete_api_tool_meta_tools_tool_name.path, { tool_name: toolName }),
|
|
48
|
+
s.toolMetaDeleted,
|
|
49
|
+
{
|
|
50
|
+
method: 'DELETE',
|
|
51
|
+
},
|
|
52
|
+
),
|
|
44
53
|
createFolder: (name: string, parentId: string | null = null) =>
|
|
45
|
-
req(
|
|
54
|
+
req(apiRoutes.post_api_tool_meta_folders.path, s.folderRecord, {
|
|
46
55
|
method: 'POST',
|
|
47
56
|
body: { name, parent_id: parentId },
|
|
48
57
|
}),
|
|
49
58
|
renameFolder: (folderId: string, name: string) =>
|
|
50
|
-
req(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
req(
|
|
60
|
+
buildPath(apiRoutes.post_api_tool_meta_folders_folder_id_rename.path, {
|
|
61
|
+
folder_id: folderId,
|
|
62
|
+
}),
|
|
63
|
+
s.folderRecord,
|
|
64
|
+
{
|
|
65
|
+
method: 'POST',
|
|
66
|
+
body: { name },
|
|
67
|
+
},
|
|
68
|
+
),
|
|
54
69
|
// `null` re-parents to the root.
|
|
55
70
|
moveFolder: (folderId: string, parentId: string | null) =>
|
|
56
|
-
req(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
71
|
+
req(
|
|
72
|
+
buildPath(apiRoutes.post_api_tool_meta_folders_folder_id_move.path, {
|
|
73
|
+
folder_id: folderId,
|
|
74
|
+
}),
|
|
75
|
+
s.folderRecord,
|
|
76
|
+
{
|
|
77
|
+
method: 'POST',
|
|
78
|
+
body: { parent_id: parentId },
|
|
79
|
+
},
|
|
80
|
+
),
|
|
60
81
|
deleteFolder: (folderId: string) =>
|
|
61
|
-
req(
|
|
62
|
-
|
|
63
|
-
|
|
82
|
+
req(
|
|
83
|
+
buildPath(apiRoutes.delete_api_tool_meta_folders_folder_id.path, { folder_id: folderId }),
|
|
84
|
+
s.folderDeleted,
|
|
85
|
+
{
|
|
86
|
+
method: 'DELETE',
|
|
87
|
+
},
|
|
88
|
+
),
|
|
64
89
|
};
|
|
65
90
|
}
|