@shipfox/client-runners 1.0.0 → 2.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.
@@ -1,2 +1,2 @@
1
1
  $ shipfox-swc
2
- Successfully compiled: 19 files with swc (420.91ms)
2
+ Successfully compiled: 19 files with swc (403.84ms)
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @shipfox/client-runners
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [e52513c]
8
+ - Updated dependencies [b70f920]
9
+ - Updated dependencies [9006b75]
10
+ - Updated dependencies [3cda0c6]
11
+ - Updated dependencies [1820feb]
12
+ - Updated dependencies [8bdc149]
13
+ - Updated dependencies [795e293]
14
+ - Updated dependencies [e10c829]
15
+ - Updated dependencies [b00ed29]
16
+ - Updated dependencies [6741be8]
17
+ - @shipfox/api-runners-dto@6.0.0
18
+ - @shipfox/react-ui@0.3.3
19
+ - @shipfox/client-ui@2.0.0
20
+
3
21
  ## 1.0.0
4
22
 
5
23
  ### Patch Changes
@@ -331,6 +331,7 @@ function manualToken(overrides = {}) {
331
331
  function provisionerToken(overrides = {}) {
332
332
  return {
333
333
  id: '33333333-3333-4333-8333-333333333333',
334
+ scope: 'workspace',
334
335
  workspace_id: WORKSPACE_ID,
335
336
  prefix: 'sf_pt_docker',
336
337
  name: 'Docker autoscaler',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/token-settings-sections.stories.tsx"],"sourcesContent":["import type {ManualRegistrationTokenDto, ProvisionerTokenDto} from '@shipfox/api-runners-dto';\nimport {configureApiClient} from '@shipfox/client-api';\nimport {RelativeTimeProvider} from '@shipfox/react-ui/relative-time';\nimport {Toaster} from '@shipfox/react-ui/toast';\nimport {Code} from '@shipfox/react-ui/typography';\nimport type {Decorator, Meta, StoryObj} from '@storybook/react';\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query';\nimport type {ReactNode} from 'react';\nimport {within} from 'storybook/test';\nimport {CreatedManualRegistrationTokenPanel} from './create-manual-registration-token-form.js';\nimport {CreatedProvisionerTokenPanel} from './create-provisioner-token-form.js';\nimport {\n EmptyManualRegistrationTokens,\n ManualRegistrationTokenList,\n ManualRegistrationTokenTableSkeleton,\n} from './manual-registration-token-list.js';\nimport {WorkspaceManualRegistrationTokensSettingsSection} from './manual-registration-tokens-settings-section.js';\nimport {\n EmptyProvisionerTokens,\n ProvisionerTokenList,\n ProvisionerTokenTableSkeleton,\n} from './provisioner-token-list.js';\nimport {WorkspaceProvisionerTokensSettingsSection} from './provisioner-tokens-settings-section.js';\n\nconst WORKSPACE_ID = '11111111-1111-4111-8111-111111111111';\nconst NOW = '2026-06-26T12:00:00.000Z';\nconst EIGHT_MINUTES_AGO = '2026-06-26T11:52:00.000Z';\nconst EXPIRES_AT = '2026-09-24T12:00:00.000Z';\nconst CREATED_AT = '2026-06-20T12:00:00.000Z';\n\ntype Scenario = 'populated' | 'empty' | 'loading' | 'errors';\n\ninterface TokenSettingsSectionsStoryProps {\n scenario: Scenario;\n}\n\nconst withQueryClient: Decorator = (Story) => {\n const queryClient = new QueryClient({defaultOptions: {queries: {retry: false}}});\n return (\n <QueryClientProvider client={queryClient}>\n <RelativeTimeProvider>\n <Story />\n </RelativeTimeProvider>\n <Toaster />\n </QueryClientProvider>\n );\n};\n\nfunction TokenSettingsSectionsStory({scenario}: TokenSettingsSectionsStoryProps) {\n configureApiClient({\n baseUrl: 'https://api.example.test',\n fetchImpl: fetchForScenario(scenario),\n });\n\n return (\n <StorySurface>\n <WorkspaceManualRegistrationTokensSettingsSection workspaceId={WORKSPACE_ID} />\n <WorkspaceProvisionerTokensSettingsSection workspaceId={WORKSPACE_ID} />\n </StorySurface>\n );\n}\n\nconst meta = {\n title: 'Runners/TokenSettingsSections',\n component: TokenSettingsSectionsStory,\n parameters: {layout: 'fullscreen'},\n decorators: [withQueryClient],\n args: {scenario: 'populated'},\n} satisfies Meta<typeof TokenSettingsSectionsStory>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Playground: Story = {\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await canvas.findAllByText('Deploy runner');\n await canvas.findAllByText('Docker autoscaler');\n await canvas.findAllByText('Connected');\n await canvas.findAllByText('Never connected');\n },\n};\n\nexport const DataStates: Story = {\n render: () => (\n <StorySurface>\n <StateExample label=\"Manual empty\">\n <EmptyManualRegistrationTokens />\n </StateExample>\n <StateExample label=\"Manual loading\">\n <ManualRegistrationTokenTableSkeleton />\n </StateExample>\n <StateExample label=\"Provisioner empty\">\n <EmptyProvisionerTokens />\n </StateExample>\n <StateExample label=\"Provisioner loading\">\n <ProvisionerTokenTableSkeleton />\n </StateExample>\n </StorySurface>\n ),\n};\n\nexport const Errors: Story = {\n args: {scenario: 'errors'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await canvas.findByText(\"Couldn't load manual registration tokens\");\n await canvas.findByText(\"Couldn't load provisioner registration tokens\");\n },\n};\n\nexport const Statuses: Story = {\n render: () => (\n <StorySurface>\n <ProvisionerTokenList\n workspaceId={WORKSPACE_ID}\n tokens={[\n provisionerToken({\n id: '33333333-3333-4333-8333-333333333333',\n name: 'Docker autoscaler',\n last_seen_at: NOW,\n }),\n provisionerToken({\n id: '44444444-4444-4444-8444-444444444444',\n name: 'Kubernetes spot pool',\n last_seen_at: EIGHT_MINUTES_AGO,\n }),\n provisionerToken({\n id: '55555555-5555-4555-8555-555555555555',\n name: 'Buildkite migration pool',\n last_seen_at: null,\n }),\n ]}\n activeIds={new Set(['33333333-3333-4333-8333-333333333333'])}\n />\n </StorySurface>\n ),\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await canvas.findAllByText('Connected');\n await canvas.findAllByText('Last seen');\n await canvas.findAllByText('Never connected');\n },\n};\n\nexport const Content: Story = {\n render: () => (\n <StorySurface>\n <StateExample label=\"Existing tokens\">\n <div className=\"flex flex-col gap-24\">\n <ManualRegistrationTokenList\n workspaceId={WORKSPACE_ID}\n tokens={[\n manualToken({name: 'Deploy runner', prefix: 'sf_mrt_deploy'}),\n manualToken({\n id: '66666666-6666-4666-8666-666666666666',\n name: 'macOS build host',\n prefix: 'sf_mrt_macos',\n expires_at: null,\n }),\n ]}\n />\n <ProvisionerTokenList\n workspaceId={WORKSPACE_ID}\n tokens={provisionerTokens()}\n activeIds={new Set(['33333333-3333-4333-8333-333333333333'])}\n />\n </div>\n </StateExample>\n <StateExample label=\"Long names\">\n <div className=\"flex flex-col gap-24\">\n <ManualRegistrationTokenList\n workspaceId={WORKSPACE_ID}\n tokens={[\n manualToken({\n name: 'self-hosted-runner-for-production-release-candidate-validation-on-metal',\n prefix: 'sf_mrt_release_candidate_validation',\n }),\n ]}\n />\n <ProvisionerTokenList\n workspaceId={WORKSPACE_ID}\n tokens={[\n provisionerToken({\n name: 'docker-provisioner-for-west-coast-gpu-burst-capacity-and-fallback',\n prefix: 'sf_pt_west_coast_gpu_burst',\n last_seen_at: EIGHT_MINUTES_AGO,\n }),\n ]}\n activeIds={new Set()}\n />\n </div>\n </StateExample>\n </StorySurface>\n ),\n};\n\nexport const CreatedTokenPanels: Story = {\n render: () => (\n <StorySurface>\n <StateExample label=\"Manual token reveal\">\n <CreatedManualRegistrationTokenPanel\n token={{\n id: '77777777-7777-4777-8777-777777777777',\n raw_token: 'sf_mrt_4nJvNrs23ExampleManualTokenValue',\n prefix: 'sf_mrt_4nJv',\n name: 'Deploy runner',\n workspace_id: WORKSPACE_ID,\n expires_at: EXPIRES_AT,\n created_at: CREATED_AT,\n }}\n />\n </StateExample>\n <StateExample label=\"Provisioner token reveal\">\n <CreatedProvisionerTokenPanel\n token={{\n ...provisionerToken({name: 'Docker autoscaler'}),\n raw_token: 'sf_pt_Rv8YwrExampleProvisionerTokenValue',\n }}\n />\n </StateExample>\n </StorySurface>\n ),\n};\n\nfunction StorySurface({children}: {children: ReactNode}) {\n return (\n <div className=\"min-h-screen bg-background-neutral-background p-24\">\n <div className=\"mx-auto flex w-full max-w-[920px] flex-col gap-32\">{children}</div>\n </div>\n );\n}\n\nfunction StateExample({label, children}: {label: string; children: ReactNode}) {\n return (\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {label}\n </Code>\n <div className=\"rounded-8 border border-border-neutral-base bg-background-neutral-base p-16\">\n {children}\n </div>\n </div>\n );\n}\n\nfunction fetchForScenario(scenario: Scenario): typeof fetch {\n return (input) => {\n const url = requestUrl(input);\n if (scenario === 'loading') return new Promise<Response>(() => undefined);\n if (url.pathname.endsWith('/runners/manual-registration-tokens')) {\n if (scenario === 'errors') return Promise.resolve(errorResponse());\n return Promise.resolve(\n jsonResponse({\n manual_registration_tokens: scenario === 'empty' ? [] : [manualToken()],\n }),\n );\n }\n if (url.pathname.endsWith('/provisioners/tokens')) {\n if (scenario === 'errors') return Promise.resolve(errorResponse());\n return Promise.resolve(\n jsonResponse({\n tokens: scenario === 'empty' ? [] : provisionerTokens(),\n }),\n );\n }\n if (url.pathname.endsWith('/provisioners/active')) {\n return Promise.resolve(\n jsonResponse({\n provisioners:\n scenario === 'empty'\n ? []\n : [\n {\n id: '33333333-3333-4333-8333-333333333333',\n name: 'Docker autoscaler',\n prefix: 'sf_pt_docker',\n last_seen_at: NOW,\n },\n ],\n }),\n );\n }\n return Promise.resolve(jsonResponse({}, {status: 404}));\n };\n}\n\nfunction provisionerTokens(): ProvisionerTokenDto[] {\n return [\n provisionerToken({\n id: '33333333-3333-4333-8333-333333333333',\n name: 'Docker autoscaler',\n prefix: 'sf_pt_docker',\n last_seen_at: NOW,\n }),\n provisionerToken({\n id: '44444444-4444-4444-8444-444444444444',\n name: 'Kubernetes spot pool',\n prefix: 'sf_pt_spot',\n last_seen_at: EIGHT_MINUTES_AGO,\n }),\n provisionerToken({\n id: '55555555-5555-4555-8555-555555555555',\n name: 'Buildkite migration pool',\n prefix: 'sf_pt_migrate',\n last_seen_at: null,\n }),\n ];\n}\n\nfunction manualToken(\n overrides: Partial<ManualRegistrationTokenDto> = {},\n): ManualRegistrationTokenDto {\n return {\n id: '22222222-2222-4222-8222-222222222222',\n workspace_id: WORKSPACE_ID,\n prefix: 'sf_mrt_deploy',\n name: 'Deploy runner',\n expires_at: EXPIRES_AT,\n revoked_at: null,\n created_at: CREATED_AT,\n updated_at: CREATED_AT,\n ...overrides,\n };\n}\n\nfunction provisionerToken(overrides: Partial<ProvisionerTokenDto> = {}): ProvisionerTokenDto {\n return {\n id: '33333333-3333-4333-8333-333333333333',\n workspace_id: WORKSPACE_ID,\n prefix: 'sf_pt_docker',\n name: 'Docker autoscaler',\n created_by_user_id: '99999999-9999-4999-8999-999999999999',\n revoked_by_user_id: null,\n expires_at: EXPIRES_AT,\n revoked_at: null,\n last_seen_at: NOW,\n created_at: CREATED_AT,\n updated_at: CREATED_AT,\n ...overrides,\n };\n}\n\nfunction requestUrl(input: RequestInfo | URL): URL {\n if (typeof input === 'string') return new URL(input);\n if (input instanceof URL) return input;\n return new URL(input.url);\n}\n\nfunction jsonResponse(body: unknown, init: ResponseInit = {}) {\n return new Response(JSON.stringify(body), {\n status: 200,\n headers: {'content-type': 'application/json'},\n ...init,\n });\n}\n\nfunction errorResponse() {\n return jsonResponse({code: 'server-error'}, {status: 500, statusText: 'Server error'});\n}\n"],"names":["configureApiClient","RelativeTimeProvider","Toaster","Code","QueryClient","QueryClientProvider","within","CreatedManualRegistrationTokenPanel","CreatedProvisionerTokenPanel","EmptyManualRegistrationTokens","ManualRegistrationTokenList","ManualRegistrationTokenTableSkeleton","WorkspaceManualRegistrationTokensSettingsSection","EmptyProvisionerTokens","ProvisionerTokenList","ProvisionerTokenTableSkeleton","WorkspaceProvisionerTokensSettingsSection","WORKSPACE_ID","NOW","EIGHT_MINUTES_AGO","EXPIRES_AT","CREATED_AT","withQueryClient","Story","queryClient","defaultOptions","queries","retry","client","TokenSettingsSectionsStory","scenario","baseUrl","fetchImpl","fetchForScenario","StorySurface","workspaceId","meta","title","component","parameters","layout","decorators","args","Playground","play","canvasElement","canvas","findAllByText","DataStates","render","StateExample","label","Errors","findByText","Statuses","tokens","provisionerToken","id","name","last_seen_at","activeIds","Set","Content","div","className","manualToken","prefix","expires_at","provisionerTokens","CreatedTokenPanels","token","raw_token","workspace_id","created_at","children","variant","input","url","requestUrl","Promise","undefined","pathname","endsWith","resolve","errorResponse","jsonResponse","manual_registration_tokens","provisioners","status","overrides","revoked_at","updated_at","created_by_user_id","revoked_by_user_id","URL","body","init","Response","JSON","stringify","headers","code","statusText"],"mappings":";AACA,SAAQA,kBAAkB,QAAO,sBAAsB;AACvD,SAAQC,oBAAoB,QAAO,kCAAkC;AACrE,SAAQC,OAAO,QAAO,0BAA0B;AAChD,SAAQC,IAAI,QAAO,+BAA+B;AAElD,SAAQC,WAAW,EAAEC,mBAAmB,QAAO,wBAAwB;AAEvE,SAAQC,MAAM,QAAO,iBAAiB;AACtC,SAAQC,mCAAmC,QAAO,6CAA6C;AAC/F,SAAQC,4BAA4B,QAAO,qCAAqC;AAChF,SACEC,6BAA6B,EAC7BC,2BAA2B,EAC3BC,oCAAoC,QAC/B,sCAAsC;AAC7C,SAAQC,gDAAgD,QAAO,mDAAmD;AAClH,SACEC,sBAAsB,EACtBC,oBAAoB,EACpBC,6BAA6B,QACxB,8BAA8B;AACrC,SAAQC,yCAAyC,QAAO,2CAA2C;AAEnG,MAAMC,eAAe;AACrB,MAAMC,MAAM;AACZ,MAAMC,oBAAoB;AAC1B,MAAMC,aAAa;AACnB,MAAMC,aAAa;AAQnB,MAAMC,kBAA6B,CAACC;IAClC,MAAMC,cAAc,IAAIpB,YAAY;QAACqB,gBAAgB;YAACC,SAAS;gBAACC,OAAO;YAAK;QAAC;IAAC;IAC9E,qBACE,MAACtB;QAAoBuB,QAAQJ;;0BAC3B,KAACvB;0BACC,cAAA,KAACsB;;0BAEH,KAACrB;;;AAGP;AAEA,SAAS2B,2BAA2B,EAACC,QAAQ,EAAkC;IAC7E9B,mBAAmB;QACjB+B,SAAS;QACTC,WAAWC,iBAAiBH;IAC9B;IAEA,qBACE,MAACI;;0BACC,KAACtB;gBAAiDuB,aAAalB;;0BAC/D,KAACD;gBAA0CmB,aAAalB;;;;AAG9D;AAEA,MAAMmB,OAAO;IACXC,OAAO;IACPC,WAAWT;IACXU,YAAY;QAACC,QAAQ;IAAY;IACjCC,YAAY;QAACnB;KAAgB;IAC7BoB,MAAM;QAACZ,UAAU;IAAW;AAC9B;AAEA,eAAeM,KAAK;AAGpB,OAAO,MAAMO,aAAoB;IAC/BC,MAAM,OAAO,EAACC,aAAa,EAAC;QAC1B,MAAMC,SAASxC,OAAOuC;QACtB,MAAMC,OAAOC,aAAa,CAAC;QAC3B,MAAMD,OAAOC,aAAa,CAAC;QAC3B,MAAMD,OAAOC,aAAa,CAAC;QAC3B,MAAMD,OAAOC,aAAa,CAAC;IAC7B;AACF,EAAE;AAEF,OAAO,MAAMC,aAAoB;IAC/BC,QAAQ,kBACN,MAACf;;8BACC,KAACgB;oBAAaC,OAAM;8BAClB,cAAA,KAAC1C;;8BAEH,KAACyC;oBAAaC,OAAM;8BAClB,cAAA,KAACxC;;8BAEH,KAACuC;oBAAaC,OAAM;8BAClB,cAAA,KAACtC;;8BAEH,KAACqC;oBAAaC,OAAM;8BAClB,cAAA,KAACpC;;;;AAIT,EAAE;AAEF,OAAO,MAAMqC,SAAgB;IAC3BV,MAAM;QAACZ,UAAU;IAAQ;IACzBc,MAAM,OAAO,EAACC,aAAa,EAAC;QAC1B,MAAMC,SAASxC,OAAOuC;QACtB,MAAMC,OAAOO,UAAU,CAAC;QACxB,MAAMP,OAAOO,UAAU,CAAC;IAC1B;AACF,EAAE;AAEF,OAAO,MAAMC,WAAkB;IAC7BL,QAAQ,kBACN,KAACf;sBACC,cAAA,KAACpB;gBACCqB,aAAalB;gBACbsC,QAAQ;oBACNC,iBAAiB;wBACfC,IAAI;wBACJC,MAAM;wBACNC,cAAczC;oBAChB;oBACAsC,iBAAiB;wBACfC,IAAI;wBACJC,MAAM;wBACNC,cAAcxC;oBAChB;oBACAqC,iBAAiB;wBACfC,IAAI;wBACJC,MAAM;wBACNC,cAAc;oBAChB;iBACD;gBACDC,WAAW,IAAIC,IAAI;oBAAC;iBAAuC;;;IAIjEjB,MAAM,OAAO,EAACC,aAAa,EAAC;QAC1B,MAAMC,SAASxC,OAAOuC;QACtB,MAAMC,OAAOC,aAAa,CAAC;QAC3B,MAAMD,OAAOC,aAAa,CAAC;QAC3B,MAAMD,OAAOC,aAAa,CAAC;IAC7B;AACF,EAAE;AAEF,OAAO,MAAMe,UAAiB;IAC5Bb,QAAQ,kBACN,MAACf;;8BACC,KAACgB;oBAAaC,OAAM;8BAClB,cAAA,MAACY;wBAAIC,WAAU;;0CACb,KAACtD;gCACCyB,aAAalB;gCACbsC,QAAQ;oCACNU,YAAY;wCAACP,MAAM;wCAAiBQ,QAAQ;oCAAe;oCAC3DD,YAAY;wCACVR,IAAI;wCACJC,MAAM;wCACNQ,QAAQ;wCACRC,YAAY;oCACd;iCACD;;0CAEH,KAACrD;gCACCqB,aAAalB;gCACbsC,QAAQa;gCACRR,WAAW,IAAIC,IAAI;oCAAC;iCAAuC;;;;;8BAIjE,KAACX;oBAAaC,OAAM;8BAClB,cAAA,MAACY;wBAAIC,WAAU;;0CACb,KAACtD;gCACCyB,aAAalB;gCACbsC,QAAQ;oCACNU,YAAY;wCACVP,MAAM;wCACNQ,QAAQ;oCACV;iCACD;;0CAEH,KAACpD;gCACCqB,aAAalB;gCACbsC,QAAQ;oCACNC,iBAAiB;wCACfE,MAAM;wCACNQ,QAAQ;wCACRP,cAAcxC;oCAChB;iCACD;gCACDyC,WAAW,IAAIC;;;;;;;AAM3B,EAAE;AAEF,OAAO,MAAMQ,qBAA4B;IACvCpB,QAAQ,kBACN,MAACf;;8BACC,KAACgB;oBAAaC,OAAM;8BAClB,cAAA,KAAC5C;wBACC+D,OAAO;4BACLb,IAAI;4BACJc,WAAW;4BACXL,QAAQ;4BACRR,MAAM;4BACNc,cAAcvD;4BACdkD,YAAY/C;4BACZqD,YAAYpD;wBACd;;;8BAGJ,KAAC6B;oBAAaC,OAAM;8BAClB,cAAA,KAAC3C;wBACC8D,OAAO;4BACL,GAAGd,iBAAiB;gCAACE,MAAM;4BAAmB,EAAE;4BAChDa,WAAW;wBACb;;;;;AAKV,EAAE;AAEF,SAASrC,aAAa,EAACwC,QAAQ,EAAwB;IACrD,qBACE,KAACX;QAAIC,WAAU;kBACb,cAAA,KAACD;YAAIC,WAAU;sBAAqDU;;;AAG1E;AAEA,SAASxB,aAAa,EAACC,KAAK,EAAEuB,QAAQ,EAAuC;IAC3E,qBACE,MAACX;QAAIC,WAAU;;0BACb,KAAC7D;gBAAKwE,SAAQ;gBAAQX,WAAU;0BAC7Bb;;0BAEH,KAACY;gBAAIC,WAAU;0BACZU;;;;AAIT;AAEA,SAASzC,iBAAiBH,QAAkB;IAC1C,OAAO,CAAC8C;QACN,MAAMC,MAAMC,WAAWF;QACvB,IAAI9C,aAAa,WAAW,OAAO,IAAIiD,QAAkB,IAAMC;QAC/D,IAAIH,IAAII,QAAQ,CAACC,QAAQ,CAAC,wCAAwC;YAChE,IAAIpD,aAAa,UAAU,OAAOiD,QAAQI,OAAO,CAACC;YAClD,OAAOL,QAAQI,OAAO,CACpBE,aAAa;gBACXC,4BAA4BxD,aAAa,UAAU,EAAE,GAAG;oBAACmC;iBAAc;YACzE;QAEJ;QACA,IAAIY,IAAII,QAAQ,CAACC,QAAQ,CAAC,yBAAyB;YACjD,IAAIpD,aAAa,UAAU,OAAOiD,QAAQI,OAAO,CAACC;YAClD,OAAOL,QAAQI,OAAO,CACpBE,aAAa;gBACX9B,QAAQzB,aAAa,UAAU,EAAE,GAAGsC;YACtC;QAEJ;QACA,IAAIS,IAAII,QAAQ,CAACC,QAAQ,CAAC,yBAAyB;YACjD,OAAOH,QAAQI,OAAO,CACpBE,aAAa;gBACXE,cACEzD,aAAa,UACT,EAAE,GACF;oBACE;wBACE2B,IAAI;wBACJC,MAAM;wBACNQ,QAAQ;wBACRP,cAAczC;oBAChB;iBACD;YACT;QAEJ;QACA,OAAO6D,QAAQI,OAAO,CAACE,aAAa,CAAC,GAAG;YAACG,QAAQ;QAAG;IACtD;AACF;AAEA,SAASpB;IACP,OAAO;QACLZ,iBAAiB;YACfC,IAAI;YACJC,MAAM;YACNQ,QAAQ;YACRP,cAAczC;QAChB;QACAsC,iBAAiB;YACfC,IAAI;YACJC,MAAM;YACNQ,QAAQ;YACRP,cAAcxC;QAChB;QACAqC,iBAAiB;YACfC,IAAI;YACJC,MAAM;YACNQ,QAAQ;YACRP,cAAc;QAChB;KACD;AACH;AAEA,SAASM,YACPwB,YAAiD,CAAC,CAAC;IAEnD,OAAO;QACLhC,IAAI;QACJe,cAAcvD;QACdiD,QAAQ;QACRR,MAAM;QACNS,YAAY/C;QACZsE,YAAY;QACZjB,YAAYpD;QACZsE,YAAYtE;QACZ,GAAGoE,SAAS;IACd;AACF;AAEA,SAASjC,iBAAiBiC,YAA0C,CAAC,CAAC;IACpE,OAAO;QACLhC,IAAI;QACJe,cAAcvD;QACdiD,QAAQ;QACRR,MAAM;QACNkC,oBAAoB;QACpBC,oBAAoB;QACpB1B,YAAY/C;QACZsE,YAAY;QACZ/B,cAAczC;QACduD,YAAYpD;QACZsE,YAAYtE;QACZ,GAAGoE,SAAS;IACd;AACF;AAEA,SAASX,WAAWF,KAAwB;IAC1C,IAAI,OAAOA,UAAU,UAAU,OAAO,IAAIkB,IAAIlB;IAC9C,IAAIA,iBAAiBkB,KAAK,OAAOlB;IACjC,OAAO,IAAIkB,IAAIlB,MAAMC,GAAG;AAC1B;AAEA,SAASQ,aAAaU,IAAa,EAAEC,OAAqB,CAAC,CAAC;IAC1D,OAAO,IAAIC,SAASC,KAAKC,SAAS,CAACJ,OAAO;QACxCP,QAAQ;QACRY,SAAS;YAAC,gBAAgB;QAAkB;QAC5C,GAAGJ,IAAI;IACT;AACF;AAEA,SAASZ;IACP,OAAOC,aAAa;QAACgB,MAAM;IAAc,GAAG;QAACb,QAAQ;QAAKc,YAAY;IAAc;AACtF"}
1
+ {"version":3,"sources":["../../src/components/token-settings-sections.stories.tsx"],"sourcesContent":["import type {ManualRegistrationTokenDto, ProvisionerTokenDto} from '@shipfox/api-runners-dto';\nimport {configureApiClient} from '@shipfox/client-api';\nimport {RelativeTimeProvider} from '@shipfox/react-ui/relative-time';\nimport {Toaster} from '@shipfox/react-ui/toast';\nimport {Code} from '@shipfox/react-ui/typography';\nimport type {Decorator, Meta, StoryObj} from '@storybook/react';\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query';\nimport type {ReactNode} from 'react';\nimport {within} from 'storybook/test';\nimport {CreatedManualRegistrationTokenPanel} from './create-manual-registration-token-form.js';\nimport {CreatedProvisionerTokenPanel} from './create-provisioner-token-form.js';\nimport {\n EmptyManualRegistrationTokens,\n ManualRegistrationTokenList,\n ManualRegistrationTokenTableSkeleton,\n} from './manual-registration-token-list.js';\nimport {WorkspaceManualRegistrationTokensSettingsSection} from './manual-registration-tokens-settings-section.js';\nimport {\n EmptyProvisionerTokens,\n ProvisionerTokenList,\n ProvisionerTokenTableSkeleton,\n} from './provisioner-token-list.js';\nimport {WorkspaceProvisionerTokensSettingsSection} from './provisioner-tokens-settings-section.js';\n\nconst WORKSPACE_ID = '11111111-1111-4111-8111-111111111111';\nconst NOW = '2026-06-26T12:00:00.000Z';\nconst EIGHT_MINUTES_AGO = '2026-06-26T11:52:00.000Z';\nconst EXPIRES_AT = '2026-09-24T12:00:00.000Z';\nconst CREATED_AT = '2026-06-20T12:00:00.000Z';\n\ntype Scenario = 'populated' | 'empty' | 'loading' | 'errors';\n\ninterface TokenSettingsSectionsStoryProps {\n scenario: Scenario;\n}\n\nconst withQueryClient: Decorator = (Story) => {\n const queryClient = new QueryClient({defaultOptions: {queries: {retry: false}}});\n return (\n <QueryClientProvider client={queryClient}>\n <RelativeTimeProvider>\n <Story />\n </RelativeTimeProvider>\n <Toaster />\n </QueryClientProvider>\n );\n};\n\nfunction TokenSettingsSectionsStory({scenario}: TokenSettingsSectionsStoryProps) {\n configureApiClient({\n baseUrl: 'https://api.example.test',\n fetchImpl: fetchForScenario(scenario),\n });\n\n return (\n <StorySurface>\n <WorkspaceManualRegistrationTokensSettingsSection workspaceId={WORKSPACE_ID} />\n <WorkspaceProvisionerTokensSettingsSection workspaceId={WORKSPACE_ID} />\n </StorySurface>\n );\n}\n\nconst meta = {\n title: 'Runners/TokenSettingsSections',\n component: TokenSettingsSectionsStory,\n parameters: {layout: 'fullscreen'},\n decorators: [withQueryClient],\n args: {scenario: 'populated'},\n} satisfies Meta<typeof TokenSettingsSectionsStory>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Playground: Story = {\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await canvas.findAllByText('Deploy runner');\n await canvas.findAllByText('Docker autoscaler');\n await canvas.findAllByText('Connected');\n await canvas.findAllByText('Never connected');\n },\n};\n\nexport const DataStates: Story = {\n render: () => (\n <StorySurface>\n <StateExample label=\"Manual empty\">\n <EmptyManualRegistrationTokens />\n </StateExample>\n <StateExample label=\"Manual loading\">\n <ManualRegistrationTokenTableSkeleton />\n </StateExample>\n <StateExample label=\"Provisioner empty\">\n <EmptyProvisionerTokens />\n </StateExample>\n <StateExample label=\"Provisioner loading\">\n <ProvisionerTokenTableSkeleton />\n </StateExample>\n </StorySurface>\n ),\n};\n\nexport const Errors: Story = {\n args: {scenario: 'errors'},\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await canvas.findByText(\"Couldn't load manual registration tokens\");\n await canvas.findByText(\"Couldn't load provisioner registration tokens\");\n },\n};\n\nexport const Statuses: Story = {\n render: () => (\n <StorySurface>\n <ProvisionerTokenList\n workspaceId={WORKSPACE_ID}\n tokens={[\n provisionerToken({\n id: '33333333-3333-4333-8333-333333333333',\n name: 'Docker autoscaler',\n last_seen_at: NOW,\n }),\n provisionerToken({\n id: '44444444-4444-4444-8444-444444444444',\n name: 'Kubernetes spot pool',\n last_seen_at: EIGHT_MINUTES_AGO,\n }),\n provisionerToken({\n id: '55555555-5555-4555-8555-555555555555',\n name: 'Buildkite migration pool',\n last_seen_at: null,\n }),\n ]}\n activeIds={new Set(['33333333-3333-4333-8333-333333333333'])}\n />\n </StorySurface>\n ),\n play: async ({canvasElement}) => {\n const canvas = within(canvasElement);\n await canvas.findAllByText('Connected');\n await canvas.findAllByText('Last seen');\n await canvas.findAllByText('Never connected');\n },\n};\n\nexport const Content: Story = {\n render: () => (\n <StorySurface>\n <StateExample label=\"Existing tokens\">\n <div className=\"flex flex-col gap-24\">\n <ManualRegistrationTokenList\n workspaceId={WORKSPACE_ID}\n tokens={[\n manualToken({name: 'Deploy runner', prefix: 'sf_mrt_deploy'}),\n manualToken({\n id: '66666666-6666-4666-8666-666666666666',\n name: 'macOS build host',\n prefix: 'sf_mrt_macos',\n expires_at: null,\n }),\n ]}\n />\n <ProvisionerTokenList\n workspaceId={WORKSPACE_ID}\n tokens={provisionerTokens()}\n activeIds={new Set(['33333333-3333-4333-8333-333333333333'])}\n />\n </div>\n </StateExample>\n <StateExample label=\"Long names\">\n <div className=\"flex flex-col gap-24\">\n <ManualRegistrationTokenList\n workspaceId={WORKSPACE_ID}\n tokens={[\n manualToken({\n name: 'self-hosted-runner-for-production-release-candidate-validation-on-metal',\n prefix: 'sf_mrt_release_candidate_validation',\n }),\n ]}\n />\n <ProvisionerTokenList\n workspaceId={WORKSPACE_ID}\n tokens={[\n provisionerToken({\n name: 'docker-provisioner-for-west-coast-gpu-burst-capacity-and-fallback',\n prefix: 'sf_pt_west_coast_gpu_burst',\n last_seen_at: EIGHT_MINUTES_AGO,\n }),\n ]}\n activeIds={new Set()}\n />\n </div>\n </StateExample>\n </StorySurface>\n ),\n};\n\nexport const CreatedTokenPanels: Story = {\n render: () => (\n <StorySurface>\n <StateExample label=\"Manual token reveal\">\n <CreatedManualRegistrationTokenPanel\n token={{\n id: '77777777-7777-4777-8777-777777777777',\n raw_token: 'sf_mrt_4nJvNrs23ExampleManualTokenValue',\n prefix: 'sf_mrt_4nJv',\n name: 'Deploy runner',\n workspace_id: WORKSPACE_ID,\n expires_at: EXPIRES_AT,\n created_at: CREATED_AT,\n }}\n />\n </StateExample>\n <StateExample label=\"Provisioner token reveal\">\n <CreatedProvisionerTokenPanel\n token={{\n ...provisionerToken({name: 'Docker autoscaler'}),\n raw_token: 'sf_pt_Rv8YwrExampleProvisionerTokenValue',\n }}\n />\n </StateExample>\n </StorySurface>\n ),\n};\n\nfunction StorySurface({children}: {children: ReactNode}) {\n return (\n <div className=\"min-h-screen bg-background-neutral-background p-24\">\n <div className=\"mx-auto flex w-full max-w-[920px] flex-col gap-32\">{children}</div>\n </div>\n );\n}\n\nfunction StateExample({label, children}: {label: string; children: ReactNode}) {\n return (\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {label}\n </Code>\n <div className=\"rounded-8 border border-border-neutral-base bg-background-neutral-base p-16\">\n {children}\n </div>\n </div>\n );\n}\n\nfunction fetchForScenario(scenario: Scenario): typeof fetch {\n return (input) => {\n const url = requestUrl(input);\n if (scenario === 'loading') return new Promise<Response>(() => undefined);\n if (url.pathname.endsWith('/runners/manual-registration-tokens')) {\n if (scenario === 'errors') return Promise.resolve(errorResponse());\n return Promise.resolve(\n jsonResponse({\n manual_registration_tokens: scenario === 'empty' ? [] : [manualToken()],\n }),\n );\n }\n if (url.pathname.endsWith('/provisioners/tokens')) {\n if (scenario === 'errors') return Promise.resolve(errorResponse());\n return Promise.resolve(\n jsonResponse({\n tokens: scenario === 'empty' ? [] : provisionerTokens(),\n }),\n );\n }\n if (url.pathname.endsWith('/provisioners/active')) {\n return Promise.resolve(\n jsonResponse({\n provisioners:\n scenario === 'empty'\n ? []\n : [\n {\n id: '33333333-3333-4333-8333-333333333333',\n name: 'Docker autoscaler',\n prefix: 'sf_pt_docker',\n last_seen_at: NOW,\n },\n ],\n }),\n );\n }\n return Promise.resolve(jsonResponse({}, {status: 404}));\n };\n}\n\nfunction provisionerTokens(): ProvisionerTokenDto[] {\n return [\n provisionerToken({\n id: '33333333-3333-4333-8333-333333333333',\n name: 'Docker autoscaler',\n prefix: 'sf_pt_docker',\n last_seen_at: NOW,\n }),\n provisionerToken({\n id: '44444444-4444-4444-8444-444444444444',\n name: 'Kubernetes spot pool',\n prefix: 'sf_pt_spot',\n last_seen_at: EIGHT_MINUTES_AGO,\n }),\n provisionerToken({\n id: '55555555-5555-4555-8555-555555555555',\n name: 'Buildkite migration pool',\n prefix: 'sf_pt_migrate',\n last_seen_at: null,\n }),\n ];\n}\n\nfunction manualToken(\n overrides: Partial<ManualRegistrationTokenDto> = {},\n): ManualRegistrationTokenDto {\n return {\n id: '22222222-2222-4222-8222-222222222222',\n workspace_id: WORKSPACE_ID,\n prefix: 'sf_mrt_deploy',\n name: 'Deploy runner',\n expires_at: EXPIRES_AT,\n revoked_at: null,\n created_at: CREATED_AT,\n updated_at: CREATED_AT,\n ...overrides,\n };\n}\n\nfunction provisionerToken(overrides: Partial<ProvisionerTokenDto> = {}): ProvisionerTokenDto {\n return {\n id: '33333333-3333-4333-8333-333333333333',\n scope: 'workspace',\n workspace_id: WORKSPACE_ID,\n prefix: 'sf_pt_docker',\n name: 'Docker autoscaler',\n created_by_user_id: '99999999-9999-4999-8999-999999999999',\n revoked_by_user_id: null,\n expires_at: EXPIRES_AT,\n revoked_at: null,\n last_seen_at: NOW,\n created_at: CREATED_AT,\n updated_at: CREATED_AT,\n ...overrides,\n };\n}\n\nfunction requestUrl(input: RequestInfo | URL): URL {\n if (typeof input === 'string') return new URL(input);\n if (input instanceof URL) return input;\n return new URL(input.url);\n}\n\nfunction jsonResponse(body: unknown, init: ResponseInit = {}) {\n return new Response(JSON.stringify(body), {\n status: 200,\n headers: {'content-type': 'application/json'},\n ...init,\n });\n}\n\nfunction errorResponse() {\n return jsonResponse({code: 'server-error'}, {status: 500, statusText: 'Server error'});\n}\n"],"names":["configureApiClient","RelativeTimeProvider","Toaster","Code","QueryClient","QueryClientProvider","within","CreatedManualRegistrationTokenPanel","CreatedProvisionerTokenPanel","EmptyManualRegistrationTokens","ManualRegistrationTokenList","ManualRegistrationTokenTableSkeleton","WorkspaceManualRegistrationTokensSettingsSection","EmptyProvisionerTokens","ProvisionerTokenList","ProvisionerTokenTableSkeleton","WorkspaceProvisionerTokensSettingsSection","WORKSPACE_ID","NOW","EIGHT_MINUTES_AGO","EXPIRES_AT","CREATED_AT","withQueryClient","Story","queryClient","defaultOptions","queries","retry","client","TokenSettingsSectionsStory","scenario","baseUrl","fetchImpl","fetchForScenario","StorySurface","workspaceId","meta","title","component","parameters","layout","decorators","args","Playground","play","canvasElement","canvas","findAllByText","DataStates","render","StateExample","label","Errors","findByText","Statuses","tokens","provisionerToken","id","name","last_seen_at","activeIds","Set","Content","div","className","manualToken","prefix","expires_at","provisionerTokens","CreatedTokenPanels","token","raw_token","workspace_id","created_at","children","variant","input","url","requestUrl","Promise","undefined","pathname","endsWith","resolve","errorResponse","jsonResponse","manual_registration_tokens","provisioners","status","overrides","revoked_at","updated_at","scope","created_by_user_id","revoked_by_user_id","URL","body","init","Response","JSON","stringify","headers","code","statusText"],"mappings":"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"}
@@ -20,6 +20,7 @@ export declare function listProvisionerTokens({ workspaceId, signal, }: {
20
20
  last_seen_at: string | null;
21
21
  created_at: string;
22
22
  updated_at: string;
23
+ scope: "workspace";
23
24
  }[];
24
25
  }>;
25
26
  export declare function createProvisionerToken({ workspaceId, body, }: {
@@ -38,6 +39,7 @@ export declare function createProvisionerToken({ workspaceId, body, }: {
38
39
  last_seen_at: string | null;
39
40
  created_at: string;
40
41
  updated_at: string;
42
+ scope: "workspace";
41
43
  }>;
42
44
  export declare function revokeProvisionerToken({ workspaceId, tokenId, }: {
43
45
  workspaceId: string;
@@ -54,6 +56,7 @@ export declare function revokeProvisionerToken({ workspaceId, tokenId, }: {
54
56
  last_seen_at: string | null;
55
57
  created_at: string;
56
58
  updated_at: string;
59
+ scope: "workspace";
57
60
  }>;
58
61
  export declare function listActiveProvisioners({ workspaceId, signal, }: {
59
62
  workspaceId: string;
@@ -79,6 +82,7 @@ export declare function useProvisionerTokensQuery(workspaceId: string | undefine
79
82
  last_seen_at: string | null;
80
83
  created_at: string;
81
84
  updated_at: string;
85
+ scope: "workspace";
82
86
  }[];
83
87
  }>, Error>;
84
88
  export declare function useCreateProvisionerTokenMutation(): import("@tanstack/react-query").UseMutationResult<{
@@ -94,6 +98,7 @@ export declare function useCreateProvisionerTokenMutation(): import("@tanstack/r
94
98
  last_seen_at: string | null;
95
99
  created_at: string;
96
100
  updated_at: string;
101
+ scope: "workspace";
97
102
  }, Error, {
98
103
  workspaceId: string;
99
104
  body: CreateProvisionerTokenBodyDto;
@@ -110,6 +115,7 @@ export declare function useRevokeProvisionerTokenMutation(): import("@tanstack/r
110
115
  last_seen_at: string | null;
111
116
  created_at: string;
112
117
  updated_at: string;
118
+ scope: "workspace";
113
119
  }, Error, {
114
120
  workspaceId: string;
115
121
  tokenId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"provisioner-tokens.d.ts","sourceRoot":"","sources":["../../../src/hooks/api/provisioner-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAK9B,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,yBAAyB;;wBAEhB,MAAM;0BACJ,MAAM;CAE7B,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,EAC1C,WAAW,EACX,MAAM,GACP,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;;;;;;;;;;;;;;GAKA;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,WAAW,EACX,IAAI,GACL,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,6BAA6B,CAAC;CACrC;;;;;;;;;;;;;GAKA;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,WAAW,EACX,OAAO,GACR,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;;;;;;;;;;;;GAKA;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,WAAW,EACX,MAAM,GACP,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;;;;;;;GAKA;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;;;;;;;;;;;;;;WAUxE;AAED,wBAAgB,iCAAiC;;;;;;;;;;;;;;iBA/ClC,MAAM;UACb,6BAA6B;YAgDpC;AAED,wBAAgB,iCAAiC;;;;;;;;;;;;;iBAtClC,MAAM;aACV,MAAM;YAuChB;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;;;;;;;WAUzE"}
1
+ {"version":3,"file":"provisioner-tokens.d.ts","sourceRoot":"","sources":["../../../src/hooks/api/provisioner-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAK9B,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,yBAAyB;;wBAEhB,MAAM;0BACJ,MAAM;CAE7B,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,EAC1C,WAAW,EACX,MAAM,GACP,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;;;;;;;;;;;;;;;GAKA;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,WAAW,EACX,IAAI,GACL,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,6BAA6B,CAAC;CACrC;;;;;;;;;;;;;;GAKA;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,WAAW,EACX,OAAO,GACR,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;;;;;;;;;;;;;GAKA;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,WAAW,EACX,MAAM,GACP,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;;;;;;;GAKA;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;WAUxE;AAED,wBAAgB,iCAAiC;;;;;;;;;;;;;;;iBA/ClC,MAAM;UACb,6BAA6B;YAgDpC;AAED,wBAAgB,iCAAiC;;;;;;;;;;;;;;iBAtClC,MAAM;aACV,MAAM;YAuChB;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;;;;;;;WAUzE"}