@artemis-studio/plugin-sdk 2026.9.63 → 2026.9.64

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@artemis-studio/plugin-sdk",
3
- "version": "2026.9.63",
3
+ "version": "2026.9.64",
4
4
  "description": "Build the UI of an Artemis Studio plugin: typings for the Studio APIs a plugin may use, and a Vite preset.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1284,6 +1284,22 @@ export interface paths {
1284
1284
  patch: operations["configure"];
1285
1285
  trace?: never;
1286
1286
  };
1287
+ "/api/v1/users/{userId}/effective-permissions": {
1288
+ parameters: {
1289
+ query?: never;
1290
+ header?: never;
1291
+ path?: never;
1292
+ cookie?: never;
1293
+ };
1294
+ get: operations["effectivePermissions"];
1295
+ put?: never;
1296
+ post?: never;
1297
+ delete?: never;
1298
+ options?: never;
1299
+ head?: never;
1300
+ patch?: never;
1301
+ trace?: never;
1302
+ };
1287
1303
  "/api/v1/time": {
1288
1304
  parameters: {
1289
1305
  query?: never;
@@ -3989,6 +4005,19 @@ export interface components {
3989
4005
  reportUndeclared: boolean;
3990
4006
  undeclaredExclusions: string[];
3991
4007
  };
4008
+ EffectivePermissionView: {
4009
+ action: string;
4010
+ description?: string | null;
4011
+ scopeType: string;
4012
+ /** Format: uuid */
4013
+ scopeId?: string | null;
4014
+ /** Format: uuid */
4015
+ roleId: string;
4016
+ roleName: string;
4017
+ via: string;
4018
+ effective: boolean;
4019
+ reason?: string | null;
4020
+ };
3992
4021
  TimeView: {
3993
4022
  /** Format: int64 */
3994
4023
  nowMs: number;
@@ -4046,6 +4075,9 @@ export interface components {
4046
4075
  PermissionView: {
4047
4076
  action: string;
4048
4077
  label: string;
4078
+ featureId: string;
4079
+ featureTitle: string;
4080
+ globalOnly: boolean;
4049
4081
  };
4050
4082
  ManifestFeatureView: {
4051
4083
  id: string;
@@ -7993,6 +8025,28 @@ export interface operations {
7993
8025
  };
7994
8026
  };
7995
8027
  };
8028
+ effectivePermissions: {
8029
+ parameters: {
8030
+ query?: never;
8031
+ header?: never;
8032
+ path: {
8033
+ userId: string;
8034
+ };
8035
+ cookie?: never;
8036
+ };
8037
+ requestBody?: never;
8038
+ responses: {
8039
+ /** @description OK */
8040
+ 200: {
8041
+ headers: {
8042
+ [name: string]: unknown;
8043
+ };
8044
+ content: {
8045
+ "*/*": components["schemas"]["EffectivePermissionView"][];
8046
+ };
8047
+ };
8048
+ };
8049
+ };
7996
8050
  now: {
7997
8051
  parameters: {
7998
8052
  query?: never;
@@ -1,11 +1,11 @@
1
- import { type UseQueryResult } from "@tanstack/react-query";
2
- import { ApiError } from "../api/request.ts";
3
- import type { components } from "../api/schema.d.ts";
4
- type Schemas = components["schemas"];
5
- export type GrantView = Schemas["GrantView"];
6
- export type IdentityProviderView = Schemas["IdentityProviderView"];
7
- export type LoginRequest = Schemas["LoginRequest"];
8
- export type MeView = Schemas["MeView"];
1
+ import { type UseQueryResult } from '@tanstack/react-query';
2
+ import { ApiError } from '../api/request.ts';
3
+ import type { components } from '../api/schema.d.ts';
4
+ type Schemas = components['schemas'];
5
+ export type GrantView = Schemas['GrantView'];
6
+ export type IdentityProviderView = Schemas['IdentityProviderView'];
7
+ export type LoginRequest = Schemas['LoginRequest'];
8
+ export type MeView = Schemas['MeView'];
9
9
  export declare const keys: {
10
10
  authProviders: readonly ["auth", "providers"];
11
11
  me: readonly ["auth", "me"];
@@ -20,7 +20,7 @@ export { gateFor, type GateVerdict } from '../ui/capabilityGate.ts';
20
20
  export { useMe } from '../kernel/auth/api.ts';
21
21
  export { CodeEditor, type CodeDiagnostic, type CodeEditorProps } from '../ui/CodeEditor.tsx';
22
22
  export { ConfirmByTyping } from '../ui/ConfirmByTyping.tsx';
23
- export { DiagramView, type DiagramAction, type DiagramChoice, type DiagramEdge, type DiagramNode, type DiagramViewProps } from '../ui/DiagramView.tsx';
23
+ export { DiagramView, type DiagramAction, type DiagramChoice, type DiagramEdge, type DiagramNode, type DiagramViewProps, } from '../ui/DiagramView.tsx';
24
24
  export { NodeOutcomeSummary, OutcomeSummary, type OutcomeRow } from '../ui/NodeOutcomeSummary.tsx';
25
25
  export { Pager } from '../ui/Pager.tsx';
26
26
  export { VirtualTable, type GridColumn } from '../ui/VirtualTable.tsx';
@@ -1,4 +1,4 @@
1
- import { HighlightStyle } from "@codemirror/language";
1
+ import { HighlightStyle } from '@codemirror/language';
2
2
  /**
3
3
  * Every colour comes from `theme.css`, so the editor follows the colour scheme
4
4
  * with the rest of the console and neither scheme is inferred from the other
package/vite.js CHANGED
@@ -15,9 +15,15 @@ import peers from './peers.json' with { type: 'json' };
15
15
  * @param {{ id: string, entry?: string, outDir?: string }} options
16
16
  * @returns {import('vite').PluginOption[]}
17
17
  */
18
- export function studioPlugin({ id, entry = './src/feature.tsx', outDir = 'target/classes/META-INF/artemis-studio/ui' }) {
18
+ export function studioPlugin({
19
+ id,
20
+ entry = './src/feature.tsx',
21
+ outDir = 'target/classes/META-INF/artemis-studio/ui',
22
+ }) {
19
23
  if (!/^[a-z][a-z0-9]*(-[a-z0-9]+)+$/.test(id)) {
20
- throw new Error(`studioPlugin: "${id}" is not a plugin id (lowercase kebab-case, at least two segments, as in plugin.json)`);
24
+ throw new Error(
25
+ `studioPlugin: "${id}" is not a plugin id (lowercase kebab-case, at least two segments, as in plugin.json)`,
26
+ );
21
27
  }
22
28
  const shared = Object.fromEntries([
23
29
  ...SHARED_LIBRARIES.map((name) => [