@shipfox/client-runners 14.0.0 → 16.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +23 -0
- package/dist/components/create-manual-registration-token-form.js +7 -7
- package/dist/components/create-manual-registration-token-form.js.map +1 -1
- package/dist/components/create-provisioner-token-form.js +7 -7
- package/dist/components/create-provisioner-token-form.js.map +1 -1
- package/dist/components/manual-registration-token-list.js +6 -6
- package/dist/components/manual-registration-token-list.js.map +1 -1
- package/dist/components/manual-registration-tokens-settings-section.js +7 -7
- package/dist/components/manual-registration-tokens-settings-section.js.map +1 -1
- package/dist/components/provisioner-token-list.js +7 -7
- package/dist/components/provisioner-token-list.js.map +1 -1
- package/dist/components/provisioner-tokens-settings-section.js +7 -7
- package/dist/components/provisioner-tokens-settings-section.js.map +1 -1
- package/dist/components/token-expiration-select.d.ts +2 -2
- package/dist/components/token-expiration-select.d.ts.map +1 -1
- package/dist/components/token-settings-sections.stories.d.ts.map +1 -1
- package/dist/feature.d.ts +16 -16
- package/dist/feature.d.ts.map +1 -1
- package/dist/hooks/api/manual-registration-tokens.d.ts +1 -1
- package/dist/hooks/api/manual-registration-tokens.d.ts.map +1 -1
- package/dist/hooks/api/provisioner-tokens.d.ts +1 -1
- package/dist/hooks/api/provisioner-tokens.d.ts.map +1 -1
- package/dist/hooks/api/token-mapper.d.ts +1 -1
- package/dist/routes/provisioners-settings.d.ts.map +1 -1
- package/dist/routes/runners-settings.d.ts.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/components/create-manual-registration-token-form.tsx +7 -7
- package/src/components/create-provisioner-token-form.tsx +7 -7
- package/src/components/manual-registration-token-list.tsx +6 -6
- package/src/components/manual-registration-tokens-settings-section.tsx +7 -7
- package/src/components/provisioner-token-list.tsx +7 -7
- package/src/components/provisioner-tokens-settings-section.tsx +7 -7
- package/tsconfig.build.tsbuildinfo +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shipfox/client-runners",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "16.0.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/ShipfoxHQ/shipfox.git",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@swc/helpers": "^0.5.17",
|
|
29
29
|
"@tanstack/react-form": "^1.32.0",
|
|
30
|
-
"@shipfox/api-runners-dto": "12.
|
|
30
|
+
"@shipfox/api-runners-dto": "12.2.0",
|
|
31
31
|
"@shipfox/client-api": "6.0.1",
|
|
32
|
-
"@shipfox/client-shell": "
|
|
33
|
-
"@shipfox/client-ui": "
|
|
34
|
-
"@shipfox/react-ui": "
|
|
32
|
+
"@shipfox/client-shell": "16.0.0",
|
|
33
|
+
"@shipfox/client-ui": "16.0.0",
|
|
34
|
+
"@shipfox/react-ui": "1.1.0"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"@tanstack/react-query": "^5.101.0",
|
|
@@ -47,10 +47,10 @@ export function CreateManualRegistrationTokenForm({
|
|
|
47
47
|
|
|
48
48
|
return (
|
|
49
49
|
<>
|
|
50
|
-
<ModalBody className="gap-
|
|
50
|
+
<ModalBody className="gap-group">
|
|
51
51
|
<form
|
|
52
52
|
id={CREATE_MANUAL_REGISTRATION_TOKEN_FORM_ID}
|
|
53
|
-
className="flex w-full flex-col gap-
|
|
53
|
+
className="flex w-full flex-col gap-inline"
|
|
54
54
|
noValidate
|
|
55
55
|
onSubmit={(event) => {
|
|
56
56
|
event.preventDefault();
|
|
@@ -58,7 +58,7 @@ export function CreateManualRegistrationTokenForm({
|
|
|
58
58
|
void form.handleSubmit();
|
|
59
59
|
}}
|
|
60
60
|
>
|
|
61
|
-
<div className="flex w-full items-end gap-
|
|
61
|
+
<div className="flex w-full items-end gap-group max-[640px]:flex-col max-[640px]:items-stretch">
|
|
62
62
|
<form.Field
|
|
63
63
|
name="name"
|
|
64
64
|
validators={{
|
|
@@ -109,7 +109,7 @@ export function CreateManualRegistrationTokenForm({
|
|
|
109
109
|
</form>
|
|
110
110
|
{formError ? (
|
|
111
111
|
<Callout role="alert" type="error">
|
|
112
|
-
<div className="flex flex-col gap-
|
|
112
|
+
<div className="flex flex-col gap-inline">
|
|
113
113
|
<Text size="sm" bold>
|
|
114
114
|
Could not create token
|
|
115
115
|
</Text>
|
|
@@ -156,14 +156,14 @@ export function CreatedManualRegistrationTokenPanel({
|
|
|
156
156
|
|
|
157
157
|
return (
|
|
158
158
|
<Callout type="success" variant="secondary" icon={null}>
|
|
159
|
-
<CalloutContent className="flex flex-col gap-
|
|
160
|
-
<div className="flex flex-col gap-
|
|
159
|
+
<CalloutContent className="flex flex-col gap-cluster">
|
|
160
|
+
<div className="flex flex-col gap-tight">
|
|
161
161
|
<CalloutTitle className="mb-0">Token created</CalloutTitle>
|
|
162
162
|
<CalloutDescription>
|
|
163
163
|
Copy this registration token now. It will not be shown again.
|
|
164
164
|
</CalloutDescription>
|
|
165
165
|
</div>
|
|
166
|
-
<div className="flex items-center gap-
|
|
166
|
+
<div className="flex items-center gap-inline max-[640px]:flex-col max-[640px]:items-stretch">
|
|
167
167
|
<Code variant="paragraph" className="min-w-0 flex-1 break-all">
|
|
168
168
|
{token.token}
|
|
169
169
|
</Code>
|
|
@@ -47,10 +47,10 @@ export function CreateProvisionerTokenForm({
|
|
|
47
47
|
|
|
48
48
|
return (
|
|
49
49
|
<>
|
|
50
|
-
<ModalBody className="gap-
|
|
50
|
+
<ModalBody className="gap-group">
|
|
51
51
|
<form
|
|
52
52
|
id={CREATE_PROVISIONER_TOKEN_FORM_ID}
|
|
53
|
-
className="flex w-full flex-col gap-
|
|
53
|
+
className="flex w-full flex-col gap-inline"
|
|
54
54
|
noValidate
|
|
55
55
|
onSubmit={(event) => {
|
|
56
56
|
event.preventDefault();
|
|
@@ -58,7 +58,7 @@ export function CreateProvisionerTokenForm({
|
|
|
58
58
|
void form.handleSubmit();
|
|
59
59
|
}}
|
|
60
60
|
>
|
|
61
|
-
<div className="flex w-full items-end gap-
|
|
61
|
+
<div className="flex w-full items-end gap-group max-[640px]:flex-col max-[640px]:items-stretch">
|
|
62
62
|
<form.Field
|
|
63
63
|
name="name"
|
|
64
64
|
validators={{
|
|
@@ -109,7 +109,7 @@ export function CreateProvisionerTokenForm({
|
|
|
109
109
|
</form>
|
|
110
110
|
{formError ? (
|
|
111
111
|
<Callout role="alert" type="error">
|
|
112
|
-
<div className="flex flex-col gap-
|
|
112
|
+
<div className="flex flex-col gap-inline">
|
|
113
113
|
<Text size="sm" bold>
|
|
114
114
|
Could not create token
|
|
115
115
|
</Text>
|
|
@@ -152,14 +152,14 @@ export function CreatedProvisionerTokenPanel({token}: {token: CreatedProvisioner
|
|
|
152
152
|
|
|
153
153
|
return (
|
|
154
154
|
<Callout type="success" variant="secondary" icon={null}>
|
|
155
|
-
<CalloutContent className="flex flex-col gap-
|
|
156
|
-
<div className="flex flex-col gap-
|
|
155
|
+
<CalloutContent className="flex flex-col gap-cluster">
|
|
156
|
+
<div className="flex flex-col gap-tight">
|
|
157
157
|
<CalloutTitle className="mb-0">Token created</CalloutTitle>
|
|
158
158
|
<CalloutDescription>
|
|
159
159
|
Copy this provisioner token now. It will not be shown again.
|
|
160
160
|
</CalloutDescription>
|
|
161
161
|
</div>
|
|
162
|
-
<div className="flex items-center gap-
|
|
162
|
+
<div className="flex items-center gap-inline max-[640px]:flex-col max-[640px]:items-stretch">
|
|
163
163
|
<Code variant="paragraph" className="min-w-0 flex-1 break-all">
|
|
164
164
|
{token.token}
|
|
165
165
|
</Code>
|
|
@@ -82,15 +82,15 @@ export function ManualRegistrationTokenList({
|
|
|
82
82
|
</Table>
|
|
83
83
|
</div>
|
|
84
84
|
<ul
|
|
85
|
-
className="hidden flex-col gap-
|
|
85
|
+
className="hidden flex-col gap-inline max-[760px]:flex"
|
|
86
86
|
aria-label="Manual registration tokens"
|
|
87
87
|
>
|
|
88
88
|
{tokens.map((token) => (
|
|
89
89
|
<li
|
|
90
90
|
key={token.id}
|
|
91
|
-
className="rounded-8 border border-border-neutral-base bg-background-neutral-base p-
|
|
91
|
+
className="flex flex-col gap-cluster rounded-8 border border-border-neutral-base bg-background-neutral-base p-panel-compact"
|
|
92
92
|
>
|
|
93
|
-
<div className="flex items-start justify-between gap-
|
|
93
|
+
<div className="flex items-start justify-between gap-cluster">
|
|
94
94
|
<div className="min-w-0 flex-1">
|
|
95
95
|
<TokenName name={tokenDisplayName(token)} />
|
|
96
96
|
<Code variant="paragraph" className="block truncate text-foreground-neutral-muted">
|
|
@@ -99,7 +99,7 @@ export function ManualRegistrationTokenList({
|
|
|
99
99
|
</div>
|
|
100
100
|
<RevokeManualRegistrationTokenButton workspaceId={workspaceId} token={token} />
|
|
101
101
|
</div>
|
|
102
|
-
<dl className="
|
|
102
|
+
<dl className="grid grid-cols-2 gap-inline text-sm">
|
|
103
103
|
<div>
|
|
104
104
|
<dt className="text-foreground-neutral-muted">Expires</dt>
|
|
105
105
|
<dd>
|
|
@@ -182,7 +182,7 @@ function RevokeManualRegistrationTokenButton({
|
|
|
182
182
|
<ModalContent aria-describedby={undefined} className="max-w-[420px]">
|
|
183
183
|
<ModalTitle className="sr-only">Revoke token</ModalTitle>
|
|
184
184
|
<ModalHeader title="Revoke token?" />
|
|
185
|
-
<ModalBody className="gap-
|
|
185
|
+
<ModalBody className="gap-group">
|
|
186
186
|
<Text size="sm" className="text-foreground-neutral-muted">
|
|
187
187
|
{tokenName} will stop creating new runner sessions. Existing sessions and job leases
|
|
188
188
|
expire on their own.
|
|
@@ -227,7 +227,7 @@ export function ManualRegistrationTokenTableSkeleton() {
|
|
|
227
227
|
<div
|
|
228
228
|
role="status"
|
|
229
229
|
aria-label="Loading manual registration tokens"
|
|
230
|
-
className="flex flex-col gap-
|
|
230
|
+
className="flex flex-col gap-inline"
|
|
231
231
|
>
|
|
232
232
|
{[0, 1, 2].map((row) => (
|
|
233
233
|
<Skeleton key={row} className="h-44 w-full" />
|
|
@@ -41,21 +41,21 @@ export function WorkspaceManualRegistrationTokensSettingsSection({
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
return (
|
|
44
|
-
<div className="flex min-w-0 flex-col gap-
|
|
45
|
-
<section className="flex flex-col gap-
|
|
46
|
-
<div className="flex items-center justify-between gap-
|
|
47
|
-
<div className="flex flex-col gap-
|
|
44
|
+
<div className="flex min-w-0 flex-col gap-region">
|
|
45
|
+
<section className="flex flex-col gap-group">
|
|
46
|
+
<div className="flex items-center justify-between gap-group max-[640px]:items-start">
|
|
47
|
+
<div className="flex flex-col gap-tight">
|
|
48
48
|
<Header variant="h3">Runner registration tokens</Header>
|
|
49
49
|
<Text size="sm" className="text-foreground-neutral-muted">
|
|
50
50
|
Register individual runner agents that run jobs directly in this workspace. Tokens are
|
|
51
51
|
reusable until revoked.
|
|
52
52
|
</Text>
|
|
53
53
|
</div>
|
|
54
|
-
<div className="flex items-center gap-
|
|
54
|
+
<div className="flex items-center gap-cluster">
|
|
55
55
|
{tokensQuery.isFetching && !tokensQuery.isPending ? (
|
|
56
56
|
<Icon
|
|
57
57
|
name="loader4Line"
|
|
58
|
-
className="mt-
|
|
58
|
+
className="mt-[2px] size-18 text-foreground-neutral-muted"
|
|
59
59
|
aria-label="Refreshing tokens"
|
|
60
60
|
/>
|
|
61
61
|
) : null}
|
|
@@ -75,7 +75,7 @@ export function WorkspaceManualRegistrationTokensSettingsSection({
|
|
|
75
75
|
</Text>
|
|
76
76
|
</ModalHeader>
|
|
77
77
|
{createdToken ? (
|
|
78
|
-
<ModalBody className="gap-
|
|
78
|
+
<ModalBody className="gap-group">
|
|
79
79
|
<CreatedManualRegistrationTokenPanel token={createdToken} />
|
|
80
80
|
</ModalBody>
|
|
81
81
|
) : (
|
|
@@ -93,13 +93,13 @@ export function ProvisionerTokenList({
|
|
|
93
93
|
</TableBody>
|
|
94
94
|
</Table>
|
|
95
95
|
</div>
|
|
96
|
-
<ul className="hidden flex-col gap-
|
|
96
|
+
<ul className="hidden flex-col gap-inline max-[760px]:flex" aria-label="Provisioner tokens">
|
|
97
97
|
{tokens.map((token) => (
|
|
98
98
|
<li
|
|
99
99
|
key={token.id}
|
|
100
|
-
className="rounded-8 border border-border-neutral-base bg-background-neutral-base p-
|
|
100
|
+
className="flex flex-col gap-cluster rounded-8 border border-border-neutral-base bg-background-neutral-base p-panel-compact"
|
|
101
101
|
>
|
|
102
|
-
<div className="flex items-start justify-between gap-
|
|
102
|
+
<div className="flex items-start justify-between gap-cluster">
|
|
103
103
|
<div className="min-w-0 flex-1">
|
|
104
104
|
<TokenName name={provisionerTokenDisplayName(token)} />
|
|
105
105
|
<Code variant="paragraph" className="block truncate text-foreground-neutral-muted">
|
|
@@ -108,7 +108,7 @@ export function ProvisionerTokenList({
|
|
|
108
108
|
</div>
|
|
109
109
|
<RevokeProvisionerTokenButton workspaceId={workspaceId} token={token} />
|
|
110
110
|
</div>
|
|
111
|
-
<dl className="
|
|
111
|
+
<dl className="grid grid-cols-2 gap-inline text-sm">
|
|
112
112
|
<div>
|
|
113
113
|
<dt className="text-foreground-neutral-muted">Status</dt>
|
|
114
114
|
<dd>
|
|
@@ -155,7 +155,7 @@ function ProvisionerStatusCell({
|
|
|
155
155
|
const status = provisionerConnectionStatus(token, activeIds);
|
|
156
156
|
|
|
157
157
|
return (
|
|
158
|
-
<span className="inline-flex items-center gap-
|
|
158
|
+
<span className="inline-flex items-center gap-inline">
|
|
159
159
|
<Dot variant={status.dotVariant} />
|
|
160
160
|
{status.kind === 'last-seen' ? (
|
|
161
161
|
<span>
|
|
@@ -220,7 +220,7 @@ function RevokeProvisionerTokenButton({
|
|
|
220
220
|
<ModalContent aria-describedby={undefined} className="max-w-[420px]">
|
|
221
221
|
<ModalTitle className="sr-only">Revoke token</ModalTitle>
|
|
222
222
|
<ModalHeader title="Revoke token?" />
|
|
223
|
-
<ModalBody className="gap-
|
|
223
|
+
<ModalBody className="gap-group">
|
|
224
224
|
<Text size="sm" className="text-foreground-neutral-muted">
|
|
225
225
|
{tokenName} will stop authenticating this provisioner. Runners it already provisioned
|
|
226
226
|
keep running until their leases expire.
|
|
@@ -262,7 +262,7 @@ export function EmptyProvisionerTokens() {
|
|
|
262
262
|
|
|
263
263
|
export function ProvisionerTokenTableSkeleton() {
|
|
264
264
|
return (
|
|
265
|
-
<div role="status" aria-label="Loading provisioner tokens" className="flex flex-col gap-
|
|
265
|
+
<div role="status" aria-label="Loading provisioner tokens" className="flex flex-col gap-inline">
|
|
266
266
|
{[0, 1, 2].map((row) => (
|
|
267
267
|
<Skeleton key={row} className="h-44 w-full" />
|
|
268
268
|
))}
|
|
@@ -46,22 +46,22 @@ export function WorkspaceProvisionerTokensSettingsSection({workspaceId}: {worksp
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
return (
|
|
49
|
-
<div className="flex min-w-0 flex-col gap-
|
|
50
|
-
<section className="flex flex-col gap-
|
|
51
|
-
<div className="flex items-center justify-between gap-
|
|
52
|
-
<div className="flex flex-col gap-
|
|
49
|
+
<div className="flex min-w-0 flex-col gap-region">
|
|
50
|
+
<section className="flex flex-col gap-group">
|
|
51
|
+
<div className="flex items-center justify-between gap-group max-[640px]:items-start">
|
|
52
|
+
<div className="flex flex-col gap-tight">
|
|
53
53
|
<Header variant="h3">Runner provisioner registration tokens</Header>
|
|
54
54
|
<Text size="sm" className="text-foreground-neutral-muted">
|
|
55
55
|
Register runner provisioners that connect to this workspace and create runners
|
|
56
56
|
dynamically based on demand.
|
|
57
57
|
</Text>
|
|
58
58
|
</div>
|
|
59
|
-
<div className="flex items-center gap-
|
|
59
|
+
<div className="flex items-center gap-cluster">
|
|
60
60
|
{(tokensQuery.isFetching && !tokensQuery.isPending) ||
|
|
61
61
|
(activeProvisionersQuery.isFetching && !activeProvisionersQuery.isPending) ? (
|
|
62
62
|
<Icon
|
|
63
63
|
name="loader4Line"
|
|
64
|
-
className="mt-
|
|
64
|
+
className="mt-[2px] size-18 text-foreground-neutral-muted"
|
|
65
65
|
aria-label="Refreshing provisioner tokens"
|
|
66
66
|
/>
|
|
67
67
|
) : null}
|
|
@@ -81,7 +81,7 @@ export function WorkspaceProvisionerTokensSettingsSection({workspaceId}: {worksp
|
|
|
81
81
|
</Text>
|
|
82
82
|
</ModalHeader>
|
|
83
83
|
{createdToken ? (
|
|
84
|
-
<ModalBody className="gap-
|
|
84
|
+
<ModalBody className="gap-group">
|
|
85
85
|
<CreatedProvisionerTokenPanel token={createdToken} />
|
|
86
86
|
</ModalBody>
|
|
87
87
|
) : (
|