@tai42/studio-sdk 29.0.0 → 30.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/components/combo-draft-editor.d.ts +31 -0
  2. package/dist/components/combo-draft-editor.d.ts.map +1 -0
  3. package/dist/components/combo-draft-editor.js +16 -0
  4. package/dist/components/combo-draft-editor.js.map +1 -0
  5. package/dist/components/committed-combo-list.d.ts +17 -0
  6. package/dist/components/committed-combo-list.d.ts.map +1 -0
  7. package/dist/components/{extension-combo-parts.js → committed-combo-list.js} +2 -22
  8. package/dist/components/committed-combo-list.js.map +1 -0
  9. package/dist/components/extension-combo-builder.d.ts +4 -4
  10. package/dist/components/extension-combo-builder.js +3 -2
  11. package/dist/components/extension-combo-builder.js.map +1 -1
  12. package/dist/components/holder-kinds.d.ts +6 -0
  13. package/dist/components/holder-kinds.d.ts.map +1 -1
  14. package/dist/components/holder-kinds.js +12 -0
  15. package/dist/components/holder-kinds.js.map +1 -1
  16. package/dist/components/holder-list.d.ts +4 -4
  17. package/dist/components/holder-list.d.ts.map +1 -1
  18. package/dist/components/holder-list.js +5 -3
  19. package/dist/components/holder-list.js.map +1 -1
  20. package/dist/components/selected-tool-badges.d.ts +13 -0
  21. package/dist/components/selected-tool-badges.d.ts.map +1 -0
  22. package/dist/components/selected-tool-badges.js +14 -0
  23. package/dist/components/selected-tool-badges.js.map +1 -0
  24. package/dist/components/tag-filter-field.d.ts +11 -0
  25. package/dist/components/tag-filter-field.d.ts.map +1 -0
  26. package/dist/components/tag-filter-field.js +15 -0
  27. package/dist/components/tag-filter-field.js.map +1 -0
  28. package/dist/components/tool-picker.d.ts +1 -1
  29. package/dist/components/tool-picker.d.ts.map +1 -1
  30. package/dist/components/tool-picker.js +4 -2
  31. package/dist/components/tool-picker.js.map +1 -1
  32. package/dist/components/tool-select.d.ts +25 -0
  33. package/dist/components/tool-select.d.ts.map +1 -0
  34. package/dist/components/{tool-picker-parts.js → tool-select.js} +1 -25
  35. package/dist/components/tool-select.js.map +1 -0
  36. package/dist/extension-combos.d.ts +6 -1
  37. package/dist/extension-combos.d.ts.map +1 -1
  38. package/dist/extension-combos.js +8 -0
  39. package/dist/extension-combos.js.map +1 -1
  40. package/dist/hooks/useApi.d.ts +2 -0
  41. package/dist/hooks/useApi.d.ts.map +1 -1
  42. package/package.json +2 -2
  43. package/src/components/combo-draft-editor.tsx +96 -0
  44. package/src/components/{extension-combo-parts.tsx → committed-combo-list.tsx} +4 -105
  45. package/src/components/extension-combo-builder.tsx +10 -10
  46. package/src/components/holder-kinds.ts +15 -0
  47. package/src/components/holder-list.tsx +6 -5
  48. package/src/components/selected-tool-badges.tsx +41 -0
  49. package/src/components/tag-filter-field.tsx +37 -0
  50. package/src/components/tool-picker.tsx +4 -2
  51. package/src/components/{tool-picker-parts.tsx → tool-select.tsx} +2 -72
  52. package/src/extension-combos.ts +15 -1
  53. package/dist/components/extension-combo-parts.d.ts +0 -46
  54. package/dist/components/extension-combo-parts.d.ts.map +0 -1
  55. package/dist/components/extension-combo-parts.js.map +0 -1
  56. package/dist/components/tool-picker-parts.d.ts +0 -43
  57. package/dist/components/tool-picker-parts.d.ts.map +0 -1
  58. package/dist/components/tool-picker-parts.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"extension-combos.js","sourceRoot":"","sources":["../src/extension-combos.ts"],"names":[],"mappings":"AASA,yEAAyE;AACzE,MAAM,UAAU,oBAAoB,CAAC,OAA+B;IAClE,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,iBAAiB,CAAC,KAAwC;IACxE,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"extension-combos.js","sourceRoot":"","sources":["../src/extension-combos.ts"],"names":[],"mappings":"AAUA,yEAAyE;AACzE,MAAM,UAAU,oBAAoB,CAAC,OAA+B;IAClE,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,iBAAiB,CAAC,KAAwC;IACxE,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACzC,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,SAAS,CAAC,CAAoB,EAAE,CAAoB;IAClE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,YAAY,CAC1B,KAAwC,EACxC,cAAmC;IAEnC,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,CAAC"}
@@ -4070,6 +4070,7 @@ export declare const ApiProvider: import("react").Provider<{
4070
4070
  locator: Record<string, string | number>;
4071
4071
  name: string;
4072
4072
  summary: string;
4073
+ tag: string;
4073
4074
  }[];
4074
4075
  }>;
4075
4076
  readonly detachStateTemplate: (name: string, template: string) => Promise<{
@@ -4922,6 +4923,7 @@ export declare const ApiProvider: import("react").Provider<{
4922
4923
  locator: Record<string, string | number>;
4923
4924
  name: string;
4924
4925
  summary: string;
4926
+ tag: string;
4925
4927
  }[];
4926
4928
  }>;
4927
4929
  readonly validatePreset: (body: import("@tai42/api-client").ValidatePresetBody) => Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,eAAO,MAAM,WAAW;wCAWwc,CAAC,0BAA0B,CAAC;+BAAsG,CAAC;oCAAuE,CAAC;;;;;;sCAAsM,CAAC,4DAA+D,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2EAAw6B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAA25B,CAAC;;;;;;;;4BAA+T,CAAC;;;;;;;;;;;;gBAA6U,CAAC;;+CAAoF,CAAC;0CAA+E,CAAC;qDAA0F,CAAC;;;;;;;;;;;;;;;;;;;;;;gHAAgyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAAu+R,CAAC;;;;;;;;;;;;6CAAgX,CAAC,kDAAuD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAA6xB,CAAC,+CAAoD,CAAC;;;;;;;;;;;;;;;;kDAAigB,CAAC;;;;;;;;;kDAAoV,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;yDAA43B,CAAC;;;;;;;;;;;;;;;;;;;uGAAysB,CAAC;wBAA4B,CAAC;aAAuB,CAAC;;;;;;;mDAA4N,CAAC;wBAA4B,CAAC;aAAwB,CAAC;;;aAA+J,CAAC;mCAAoE,CAAC;;;;;;;;;;;;;;;;;;;;;;;uCAAkoB,CAAC;;;aAA6F,CAAC;cAAyB,CAAC;;;;wCAA+M,CAAC;;;;sDAA2I,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAA+xE,CAAC;;;;;;;;;;;;wDAAqZ,CAAC;;;;;;;uBAAsM,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;;;yCAA+Z,CAAC;;;;;;;sCAAgM,CAAC;cAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAA05C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAA43B,CAAC;;;;;;;;;eAAgR,CAAC;;;;;;;;;;;;;oBAAmY,CAAC;gBAA0B,CAAC;;;;;;;;;;;;;uCAAyX,CAAC;;mBAAoE,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;;;;;;;;;uBAA2lB,CAAC;;;;;;;;;;;;;;iCAAga,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAA0wB,CAAC;;;;;;;;;;;;;;+BAAkhB,CAAC;;;;mBAAkI,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;;;;;mBAAsY,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;;;;;mBAAkZ,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;;;;;oDAA0W,CAAC;;;;;;;;;;2BAAoU,CAAC;sBAA4C,CAAC;0BAAgD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;mBAA6vB,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;gCAAyO,CAAC;;;;;;;;;;;;;;oCAAkd,CAAC;;;;;;;;;;sCAA6X,CAAC;;;;;;;uCAA6R,CAAC;;;;;;;;;;;;;;;;;;;;;;;wCAAg1B,CAAC;;;;;;;;sCAAmV,CAAC;;;;;;;;;;;;;;;;;;;;8BAAssB,CAAC,gBAAgB,CAAC;;;uBAA+F,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAA6G,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;uBAAiM,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;uBAAyI,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAA8G,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;mCAAmQ,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;+BAAuN,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;+BAA2K,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;;mCAA4M,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA0I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA6I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;;;;2BAA+Q,CAAC;sBAA4C,CAAC;0BAAgD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;uCAAi2B,CAAC;;;;;;;;;gCAAoW,CAAC;;;;;;;;;;4CAAsT,CAAC;;;;;;;;;;kEAA4U,CAAC;0EAA8J,CAAC;uCAA2H,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAAwsD,CAAC;;;;uBAAyI,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;uBAAqP,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;uBAAqY,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;;;;;;;uBAAiwB,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;uBAA8I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;uBAA6R,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;uBAA2P,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;uBAAuY,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;;;;;;;uBAAiwB,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;uBAA8I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;;;;;uBAA8hB,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;uBAAqP,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;uBAAqY,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;;;;;;;uBAAiwB,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;uBAA8I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;uBAA6R,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;uBAA2P,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;uBAAuY,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;;;;;;;uBAAiwB,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;uBAA8I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;;;iGAAkd,CAAC,+DAAoE,CAAC;;;;;;;;;;;;;;;gHAA+pB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mHAAisT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oFAA8yT,CAAC;;;;;;;;6CAA2W,CAAC;;;;;;;;;mCAAoU,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;+BAAuN,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;+BAA2K,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;;mCAA4M,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA0I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA6I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;;;;;;;;+HAAqc,CAAC;;;;;;;;+BAAmR,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;;2BAAmM,CAAC;sBAA4C,CAAC;0BAAgD,CAAC;;;;2BAA2J,CAAC;sBAA4C,CAAC;0BAAgD,CAAC;;;;;+BAAwL,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;+BAA8H,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;+BAAiI,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;;;;;;;;;;;;;;;mCAAmoB,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;+BAAuN,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;+BAA2K,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;;mCAA4M,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA0I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA6I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;;;;;;;;;;;;;;oDAAkpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAA82T,CAAC;;;;;;sEAA+M,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAA2oD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAAm/L,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAA88B,CAAC;;;;;;;;;;;;;;;;;+CAA+mB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EAA+mG,CAAC;;;;sFAA6K,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DAA65C,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAAwrG,CAAC;;;;mBAA8H,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAAy7B,CAAC;;;;;;0CAAkL,CAAC;;;;sDAA+I,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DAAm6E,CAAC;;;;;;8EAA8N,CAAC;;;;;;;;;;;;;;;kCAAic,CAAC;;;;;;;mBAAuO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAA8yD,CAAC;;;;mCAAgI,CAAC;;;;;;;;;;;;;;gCAA6d,CAAC;;;;;;oEAAuO,CAAC;;;;;;;;;kCAA0P,CAAC;;;;;;;;;;;;;;;;2DAAkiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAAyxF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAA43C,CAAC;;;;mBAA8H,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mEAAsvF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAAgmH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAAo4K,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAAw8F,CAAC;;;;;;qDAAyN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAAqsE,CAAC;;;;;sCAAmK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAA69B,CAAC;;;;;;0CAAuN,CAAC;;;qDAAsH,CAAC;;;;;;;;;;;;;;;;;;qDAAod,CAAC;;;;yDAAsJ,CAAC;;;;;;;;;;;;;kCAAoc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAA61B,CAAC;;;;;;;;;;;;;;;;;;;gCAA6kB,CAAC;;;;;;;;;;;;cAAga,CAAC;mBAAiD,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;4CAAoH,CAAC;;;;;;;;;;;;;;;;;;cAAkmB,CAAC;mBAAiD,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;;;;;;;;;YAAijB,CAAC;;;;;;;;;;cAA6R,CAAC;mBAAiD,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;iDAAqO,CAAC;;;;;YAAiL,CAAC;;;;;;;;;;;wDAA+U,CAAC;;;;;;;wEAAmR,CAAC;;;;;;;;;;YAA+Y,CAAC;;;;;;;;;;;;;;;;8EAA8jB,CAAC;;;;;;;;;;;;;;;YAAoe,CAAC;0DAAkE,CAAC;;;;;;;;;;;YAAkU,CAAC;;;;;;;;;;;;;0DAAib,CAAC;;;;;;;;;;;YAAiU,CAAC;;;;;;;;;;;qFAA4W,CAAC;;;;;;;;YAAuN,CAAC;0DAAkE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;wGAAgzB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wHAAy6E,CAAC,iCAAiC,CAAC;;;;;uHAAiO,CAAC;aAAiB,CAAC;aAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;yGAAi6B,CAAC,oDAAkD,CAAC;;;;;;;;;;;;;;;;;;kDAAupB,CAAC;;;;;;;;;;;wCAAoW,CAAC;;;uBAAgG,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;mBAAoT,CAAC;;;;uBAAwF,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAAoG,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAAwG,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;uBAAyS,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;cAA4R,CAAC;mBAAiD,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;aAA2E,CAAC;;;;oDAAuH,CAAC;;;uBAAgG,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;mBAAoT,CAAC;;;;uBAAwF,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAAoG,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAAwG,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;uBAAyS,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;cAA6N,CAAC;mBAAiD,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;aAA2E,CAAC;;;;0GAAyK,CAAC;;;uBAA4F,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;mBAAoT,CAAC;;;;uBAAwF,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAAoG,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAAwG,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;;;;uBAAyS,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;cAA6N,CAAC;mBAAiD,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;aAA2E,CAAC;;;;;;;;;;YAA6R,CAAC;;;;;;;;;;;;cAA+U,CAAC;0DAAoF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAA6qC,CAAC;;;;;;;mBAA4O,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;mBAA8H,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;mBAAiI,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;mBAA+H,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;;;;;;;;;;mBAAyhB,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;mBAA8H,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;mBAAiI,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;mBAA+H,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;;;6CAAwR,CAAC;;;;;;;;mBAA2R,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;mBAA8H,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;mBAAiI,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;mBAA+H,CAAC;cAAoC,CAAC;kBAAwC,CAAC;;;;;;;;;sDAAiS,CAAC;;;;;;;;;;;uBAAkY,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAA0I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAAuH,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAA2I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;mCAAmQ,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;+BAAuN,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;+BAA2K,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;;mCAA4M,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA0I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA6I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;;;;qEAA2R,CAAC;;;;;;;;;;;uBAAkY,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAA0I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAAuH,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAA2I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;mCAAmQ,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;+BAAuN,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;+BAA2K,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;;mCAA4M,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA0I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA6I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;;;;;;;;;;;;;;;uBAA8qB,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAA0I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAAuH,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;uBAA2I,CAAC;kBAAwC,CAAC;sBAA4C,CAAC;;;;;;;mCAAmQ,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;+BAAuN,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;+BAA2K,CAAC;0BAAgD,CAAC;8BAAoD,CAAC;;;;;mCAA4M,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA0I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;mCAA6I,CAAC;8BAAoD,CAAC;kCAAwD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6GAA4hE,CAAC;;;;;;;;;;;;;;;;;;+BAAgnB,CAAC;iDAAsF,CAAC;;;;;uCAAuM,CAAC;;;;;4EAAyP,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wFAAk+E,CAAC;;;+CAA2G,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAAq5F,CAAC;;;;;;;kCAAmQ,CAAC;;;;;;;;;;;;;+HAA22B,CAAC;;;SAXn7nL,CAAC;AAE/C,wBAAgB,MAAM,IAAI,SAAS,CAMlC;AAED,YAAY,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tai42/studio-sdk",
3
- "version": "29.0.0",
3
+ "version": "30.0.1",
4
4
  "description": "The Studio plugin contract, shared UI components, and hooks that every feature builds on.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "tai42 <oss@tai42.ai>",
@@ -96,7 +96,7 @@
96
96
  "@radix-ui/react-select": "^2.3.8",
97
97
  "@radix-ui/react-tabs": "^1.1.22",
98
98
  "@radix-ui/react-tooltip": "^1.3.0",
99
- "@tai42/api-client": "29.0.0"
99
+ "@tai42/api-client": "30.0.1"
100
100
  },
101
101
  "scripts": {
102
102
  "build": "tsc -b tsconfig.build.json && node scripts/copy-assets.mjs",
@@ -0,0 +1,96 @@
1
+ /**
2
+ * `ExtensionComboBuilder`'s editor for the combo under construction: the extension
3
+ * picker, a settings form per configurable drafted extension, and the commit actions.
4
+ */
5
+ import type { Extension } from '@tai42/api-client';
6
+ import type { ReactNode } from 'react';
7
+
8
+ import type { JsonSchema } from '../schema-form/types';
9
+ import { type ExtensionConfigChange, ExtensionConfigEditor } from './extension-config-editor';
10
+ import { ExtensionPicker } from './extension-picker';
11
+ import { XCircleIcon } from './icons';
12
+ import { Button } from './primitives';
13
+
14
+ /** A drafted extension whose catalog entry declares a settings schema. */
15
+ export interface ConfigurableExtension {
16
+ readonly name: string;
17
+ readonly schema: JsonSchema;
18
+ }
19
+
20
+ /** The combo under construction: the extension picker, one settings form per drafted
21
+ * configurable extension, the duplicate note, and the Add/Update + Cancel actions. */
22
+ export function ComboDraftEditor({
23
+ available,
24
+ draft,
25
+ onDraftChange,
26
+ configurable,
27
+ draftConfigs,
28
+ onDraftConfigChange,
29
+ isDuplicate,
30
+ canAdd,
31
+ editing,
32
+ disabled,
33
+ idPrefix,
34
+ onCommit,
35
+ onReset,
36
+ }: {
37
+ readonly available: readonly Extension[];
38
+ readonly draft: string[];
39
+ readonly onDraftChange: (draft: string[]) => void;
40
+ readonly configurable: readonly ConfigurableExtension[];
41
+ readonly draftConfigs: Readonly<Record<string, Record<string, unknown> | undefined>>;
42
+ readonly onDraftConfigChange: (name: string, change: ExtensionConfigChange) => void;
43
+ readonly isDuplicate: boolean;
44
+ readonly canAdd: boolean;
45
+ readonly editing: number | null;
46
+ readonly disabled: boolean | undefined;
47
+ readonly idPrefix: string;
48
+ readonly onCommit: () => void;
49
+ readonly onReset: () => void;
50
+ }): ReactNode {
51
+ return (
52
+ <div className="tai-stack tai-stack-2">
53
+ <ExtensionPicker
54
+ available={available}
55
+ value={draft}
56
+ onChange={onDraftChange}
57
+ disabled={disabled}
58
+ idPrefix={`${idPrefix}-draft`}
59
+ />
60
+
61
+ {configurable.map(({ name, schema }) => (
62
+ <ExtensionConfigEditor
63
+ // Re-seed the form when the draft target changes (a new draft vs a
64
+ // specific combo pulled in for edit).
65
+ key={`${editing === null ? 'new' : String(editing)}-${name}`}
66
+ name={name}
67
+ schema={schema}
68
+ value={draftConfigs[name]}
69
+ onChange={(change) => {
70
+ onDraftConfigChange(name, change);
71
+ }}
72
+ disabled={disabled}
73
+ idPrefix={`${idPrefix}-settings-${name}`}
74
+ />
75
+ ))}
76
+
77
+ {isDuplicate ? (
78
+ <p role="alert" className="tai-field-error">
79
+ <XCircleIcon />
80
+ This extension set is already added.
81
+ </p>
82
+ ) : null}
83
+
84
+ <div className="tai-row">
85
+ <Button type="button" variant="primary" onClick={onCommit} disabled={!canAdd}>
86
+ {editing === null ? 'Add extension set' : 'Update extension set'}
87
+ </Button>
88
+ {editing !== null ? (
89
+ <Button type="button" onClick={onReset} disabled={disabled}>
90
+ Cancel edit
91
+ </Button>
92
+ ) : null}
93
+ </div>
94
+ </div>
95
+ );
96
+ }
@@ -1,32 +1,15 @@
1
1
  /**
2
- * The pieces of `ExtensionComboBuilder`: the committed-combo list
3
- * (`CommittedComboList`), the under-construction combo editor (`ComboDraftEditor`),
4
- * and the shared combo helpers. The builder owns the state and composes these.
2
+ * `ExtensionComboBuilder`'s list of committed combos: one row of name badges per
3
+ * combo, with per-combo Edit and Remove and an inline unknown-name note.
5
4
  */
6
- import type { Extension, PresetExtensionElement } from '@tai42/api-client';
5
+ import type { PresetExtensionElement } from '@tai42/api-client';
7
6
  import { Fragment, type ReactNode } from 'react';
8
7
 
9
- import { comboElementNames } from '../extension-combos';
10
- import type { JsonSchema } from '../schema-form/types';
8
+ import { comboElementNames, unknownNames } from '../extension-combos';
11
9
  import { Badge } from './badge';
12
- import { type ExtensionConfigChange, ExtensionConfigEditor } from './extension-config-editor';
13
- import { ExtensionPicker } from './extension-picker';
14
10
  import { CloseIcon, XCircleIcon } from './icons';
15
11
  import { Button } from './primitives';
16
12
 
17
- /** Two combos are equal when their NAME sequences match (config is not part of identity). */
18
- export function sameNames(a: readonly string[], b: readonly string[]): boolean {
19
- return a.length === b.length && a.every((name, index) => name === b[index]);
20
- }
21
-
22
- /** The element names in a combo that are absent from the known catalog. */
23
- export function unknownNames(
24
- combo: readonly PresetExtensionElement[],
25
- availableNames: ReadonlySet<string>,
26
- ): string[] {
27
- return comboElementNames(combo).filter((name) => !availableNames.has(name));
28
- }
29
-
30
13
  /** One committed combo's row: its name badges and the Edit / Remove pair, with an
31
14
  * inline unknown-name note. */
32
15
  function CommittedComboRow({
@@ -140,87 +123,3 @@ export function CommittedComboList({
140
123
  </ul>
141
124
  );
142
125
  }
143
-
144
- /** A drafted extension whose catalog entry declares a settings schema. */
145
- export interface ConfigurableExtension {
146
- readonly name: string;
147
- readonly schema: JsonSchema;
148
- }
149
-
150
- /** The combo under construction: the extension picker, one settings form per drafted
151
- * configurable extension, the duplicate note, and the Add/Update + Cancel actions. */
152
- export function ComboDraftEditor({
153
- available,
154
- draft,
155
- onDraftChange,
156
- configurable,
157
- draftConfigs,
158
- onDraftConfigChange,
159
- isDuplicate,
160
- canAdd,
161
- editing,
162
- disabled,
163
- idPrefix,
164
- onCommit,
165
- onReset,
166
- }: {
167
- readonly available: readonly Extension[];
168
- readonly draft: string[];
169
- readonly onDraftChange: (draft: string[]) => void;
170
- readonly configurable: readonly ConfigurableExtension[];
171
- readonly draftConfigs: Readonly<Record<string, Record<string, unknown> | undefined>>;
172
- readonly onDraftConfigChange: (name: string, change: ExtensionConfigChange) => void;
173
- readonly isDuplicate: boolean;
174
- readonly canAdd: boolean;
175
- readonly editing: number | null;
176
- readonly disabled: boolean | undefined;
177
- readonly idPrefix: string;
178
- readonly onCommit: () => void;
179
- readonly onReset: () => void;
180
- }): ReactNode {
181
- return (
182
- <div className="tai-stack tai-stack-2">
183
- <ExtensionPicker
184
- available={available}
185
- value={draft}
186
- onChange={onDraftChange}
187
- disabled={disabled}
188
- idPrefix={`${idPrefix}-draft`}
189
- />
190
-
191
- {configurable.map(({ name, schema }) => (
192
- <ExtensionConfigEditor
193
- // Re-seed the form when the draft target changes (a new draft vs a
194
- // specific combo pulled in for edit).
195
- key={`${editing === null ? 'new' : String(editing)}-${name}`}
196
- name={name}
197
- schema={schema}
198
- value={draftConfigs[name]}
199
- onChange={(change) => {
200
- onDraftConfigChange(name, change);
201
- }}
202
- disabled={disabled}
203
- idPrefix={`${idPrefix}-settings-${name}`}
204
- />
205
- ))}
206
-
207
- {isDuplicate ? (
208
- <p role="alert" className="tai-field-error">
209
- <XCircleIcon />
210
- This extension set is already added.
211
- </p>
212
- ) : null}
213
-
214
- <div className="tai-row">
215
- <Button type="button" variant="primary" onClick={onCommit} disabled={!canAdd}>
216
- {editing === null ? 'Add extension set' : 'Update extension set'}
217
- </Button>
218
- {editing !== null ? (
219
- <Button type="button" onClick={onReset} disabled={disabled}>
220
- Cancel edit
221
- </Button>
222
- ) : null}
223
- </div>
224
- </div>
225
- );
226
- }
@@ -6,10 +6,10 @@
6
6
  * preset/tool extensions wire carries. It is PRESENTATIONAL: the caller fetches the
7
7
  * extension catalog (`available`) and owns the `value`; this component fetches nothing.
8
8
  *
9
- * The surface has two parts:
10
- * - the current combos, each an ordered row of name `Badge`s with a per-combo Edit
11
- * (pull it back into the draft) and Remove;
12
- * - a combo UNDER CONSTRUCTION, authored with the shared `ExtensionPicker` (grouped
9
+ * The surface has two sections:
10
+ * - the current combos (`CommittedComboList`), each an ordered row of name `Badge`s
11
+ * with a per-combo Edit (pull it back into the draft) and Remove;
12
+ * - a combo UNDER CONSTRUCTION (`ComboDraftEditor`), authored with the shared `ExtensionPicker` (grouped
13
13
  * by kind, single-select for the non-stackable `backend` kind). An extension whose
14
14
  * catalog entry declares a `config_schema` is authored as `{ name, config }` through
15
15
  * its settings form; any other name stays a bare element, or the edited combo's own
@@ -38,15 +38,15 @@
38
38
  import type { Extension, PresetExtensionElement } from '@tai42/api-client';
39
39
  import { type ReactNode, useEffect, useState } from 'react';
40
40
 
41
- import { comboElementNames, extensionElementName } from '../extension-combos';
42
- import type { JsonSchema } from '../schema-form/types';
43
41
  import {
44
- ComboDraftEditor,
45
- CommittedComboList,
46
- type ConfigurableExtension,
42
+ comboElementNames,
43
+ extensionElementName,
47
44
  sameNames,
48
45
  unknownNames,
49
- } from './extension-combo-parts';
46
+ } from '../extension-combos';
47
+ import type { JsonSchema } from '../schema-form/types';
48
+ import { ComboDraftEditor, type ConfigurableExtension } from './combo-draft-editor';
49
+ import { CommittedComboList } from './committed-combo-list';
50
50
  import type { ExtensionConfigChange } from './extension-config-editor';
51
51
 
52
52
  type Seeds = Readonly<Record<string, Record<string, unknown> | undefined>>;
@@ -50,6 +50,21 @@ const CORE_ROUTES: Readonly<Record<string, (holder: ReferenceHolder) => CoreHold
50
50
  setting: () => ({ token: 'settings', search: {} }),
51
51
  };
52
52
 
53
+ /**
54
+ * A count holder stands for the holders of one kind and tag the caller's role cannot
55
+ * read: its name is the tag and its locator carries only the count. It names no holder,
56
+ * so it has no page to link to.
57
+ */
58
+ export function isCountHolder(holder: ReferenceHolder): boolean {
59
+ const keys = Object.keys(holder.locator);
60
+ return (
61
+ holder.name === holder.tag &&
62
+ keys.length === 1 &&
63
+ keys[0] === 'count' &&
64
+ typeof holder.locator.count === 'number'
65
+ );
66
+ }
67
+
53
68
  /** Every kind the platform reports; a plugin cannot register a link for one. */
54
69
  export const CORE_HOLDER_KINDS: ReadonlySet<string> = new Set(Object.keys(CORE_ROUTES));
55
70
 
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * `HolderList` — the things that still use a name, each a link to where it lives.
3
3
  * A core holder kind links to its Studio screen; a plugin kind links to the page its
4
- * plugin registered for it; a kind nobody resolves shows as text, so no holder is
5
- * hidden.
4
+ * plugin registered for it; a kind nobody resolves, and a count of holders the caller's
5
+ * role cannot read, show as text, so no holder is hidden.
6
6
  */
7
7
  import type { ReferenceHolder } from '@tai42/api-client';
8
8
  import { type MouseEvent, type ReactNode, useCallback } from 'react';
9
9
 
10
10
  import { errorMessage } from '../errors';
11
11
  import { useNavigation } from '../navigation/context';
12
- import { coreHolderRoute } from './holder-kinds';
12
+ import { coreHolderRoute, isCountHolder } from './holder-kinds';
13
13
  import { Spinner } from './primitives';
14
14
  import { ScrollRegion } from './scroll-region';
15
15
 
@@ -20,14 +20,15 @@ export interface HolderHref {
20
20
  }
21
21
 
22
22
  /**
23
- * The resolver for holder links: `null` for a kind neither the core table nor any
24
- * registered plugin resolves.
23
+ * The resolver for holder links: `null` for a count holder and for a kind neither the
24
+ * core table nor any registered plugin resolves.
25
25
  */
26
26
  export function useHolderHref(): (holder: ReferenceHolder) => HolderHref | null {
27
27
  const { navigate, resolvePath, navigatePlugin, resolvePluginPath, resolveHolderLink } =
28
28
  useNavigation();
29
29
  return useCallback(
30
30
  (holder: ReferenceHolder): HolderHref | null => {
31
+ if (isCountHolder(holder)) return null;
31
32
  const core = coreHolderRoute(holder);
32
33
  if (core !== null) {
33
34
  return {
@@ -0,0 +1,41 @@
1
+ /** `ToolPicker`'s capability badges for the selected tool, and the note every badge
2
+ * surface carries. */
3
+ import type { ReactNode } from 'react';
4
+
5
+ import { Badge } from './badge';
6
+ import { Tooltip } from './tooltip';
7
+
8
+ /** The shared informational note every badge surface carries: declared, never enforced. */
9
+ export const BADGES_NOTE =
10
+ 'Declared capability labels — informational only. They describe what the tool touches; the server never enforces them.';
11
+
12
+ /** The selected tool's DECLARED capability badges, read-only and informational.
13
+ * Renders nothing unless the selected tool carries badges. */
14
+ export function SelectedToolBadges({
15
+ value,
16
+ badgesByTool,
17
+ idPrefix,
18
+ }: {
19
+ readonly value: string | null;
20
+ readonly badgesByTool: Readonly<Record<string, readonly string[]>> | undefined;
21
+ readonly idPrefix: string;
22
+ }): ReactNode {
23
+ if (value === null || badgesByTool === undefined || (badgesByTool[value]?.length ?? 0) === 0) {
24
+ return null;
25
+ }
26
+ return (
27
+ <Tooltip content={BADGES_NOTE}>
28
+ <span
29
+ className="tai-row"
30
+ data-testid={`${idPrefix}-badges`}
31
+ style={{ gap: 'var(--tai-space-1)' }}
32
+ >
33
+ {(badgesByTool[value] ?? []).map((badge) => (
34
+ <Badge key={badge} variant="neutral">
35
+ {badge}
36
+ </Badge>
37
+ ))}
38
+ </span>
39
+ </Tooltip>
40
+ );
41
+ }
@@ -0,0 +1,37 @@
1
+ /** `ToolPicker`'s tag filter field and its "no filter" sentinel value. */
2
+ import type { ReactNode } from 'react';
3
+
4
+ import { Field } from './field';
5
+ import { Select } from './select';
6
+
7
+ // Radix `Select.Item` forbids an empty-string value, so the "no filter" choice
8
+ // uses a sentinel rather than ''. A tool literally tagged this string would just
9
+ // never be filtered out — harmless for a UI convenience whose authority is the server.
10
+ export const ALL_TAGS = '__all_tags__';
11
+
12
+ /** The tag filter: an "All tags" sentinel plus one option per distinct tag. */
13
+ export function TagFilterField({
14
+ allTags,
15
+ tagFilter,
16
+ onTagFilterChange,
17
+ disabled,
18
+ }: {
19
+ readonly allTags: readonly string[];
20
+ readonly tagFilter: string;
21
+ readonly onTagFilterChange: (value: string) => void;
22
+ readonly disabled: boolean | undefined;
23
+ }): ReactNode {
24
+ return (
25
+ <Field label="Filter by tag">
26
+ <Select
27
+ options={[
28
+ { value: ALL_TAGS, label: 'All tags' },
29
+ ...allTags.map((tag) => ({ value: tag, label: tag })),
30
+ ]}
31
+ value={tagFilter}
32
+ onValueChange={onTagFilterChange}
33
+ disabled={disabled}
34
+ />
35
+ </Field>
36
+ );
37
+ }
@@ -47,9 +47,11 @@ import { Badge } from './badge';
47
47
  import { Field } from './field';
48
48
  import { ErrorState } from './primitives';
49
49
  import type { SelectOption } from './select';
50
- import { ALL_TAGS, SelectedToolBadges, TagFilterField, ToolSelect } from './tool-picker-parts';
50
+ import { SelectedToolBadges } from './selected-tool-badges';
51
+ import { ALL_TAGS, TagFilterField } from './tag-filter-field';
52
+ import { ToolSelect } from './tool-select';
51
53
 
52
- export { BADGES_NOTE } from './tool-picker-parts';
54
+ export { BADGES_NOTE } from './selected-tool-badges';
53
55
 
54
56
  const MUTED_LINE = { margin: 0, color: 'var(--tai-color-text-muted)' } as const;
55
57
 
@@ -1,26 +1,14 @@
1
1
  /**
2
- * The pieces of `ToolPicker`: the tool `Select` itself (grouped or flat), the tag
3
- * filter field, and the selected tool's capability badges. The picker owns the
4
- * state and composes these; the option-label and grouping helpers live here too.
2
+ * `ToolPicker`'s tool `Select`: grouped by tag or flat, with the option-label and
3
+ * grouping helpers it renders from.
5
4
  */
6
5
  import type { ReactNode } from 'react';
7
6
 
8
7
  import { toolDisplayLabel } from '../hooks/useToolDisplayNames';
9
- import { Badge } from './badge';
10
- import { Field } from './field';
11
8
  import { Select, type SelectGroup, type SelectOption } from './select';
12
- import { Tooltip } from './tooltip';
13
-
14
- /** The shared informational note every badge surface carries: declared, never enforced. */
15
- export const BADGES_NOTE =
16
- 'Declared capability labels — informational only. They describe what the tool touches; the server never enforces them.';
17
9
 
18
10
  const NO_DISPLAY_NAMES: Readonly<Record<string, string>> = {};
19
11
  const UNTAGGED = 'Untagged';
20
- // Radix `Select.Item` forbids an empty-string value, so the "no filter" choice
21
- // uses a sentinel rather than ''. A tool literally tagged this string would just
22
- // never be filtered out — harmless for a UI convenience whose authority is the server.
23
- export const ALL_TAGS = '__all_tags__';
24
12
 
25
13
  /** The group a tool sorts into: its alphabetically-first tag, else "Untagged". */
26
14
  function groupFor(name: string, tagsByTool: Readonly<Record<string, readonly string[]>>): string {
@@ -135,61 +123,3 @@ export function ToolSelect({
135
123
  />
136
124
  );
137
125
  }
138
-
139
- /** The tag filter: an "All tags" sentinel plus one option per distinct tag. */
140
- export function TagFilterField({
141
- allTags,
142
- tagFilter,
143
- onTagFilterChange,
144
- disabled,
145
- }: {
146
- readonly allTags: readonly string[];
147
- readonly tagFilter: string;
148
- readonly onTagFilterChange: (value: string) => void;
149
- readonly disabled: boolean | undefined;
150
- }): ReactNode {
151
- return (
152
- <Field label="Filter by tag">
153
- <Select
154
- options={[
155
- { value: ALL_TAGS, label: 'All tags' },
156
- ...allTags.map((tag) => ({ value: tag, label: tag })),
157
- ]}
158
- value={tagFilter}
159
- onValueChange={onTagFilterChange}
160
- disabled={disabled}
161
- />
162
- </Field>
163
- );
164
- }
165
-
166
- /** The selected tool's DECLARED capability badges, read-only and informational.
167
- * Renders nothing unless the selected tool carries badges. */
168
- export function SelectedToolBadges({
169
- value,
170
- badgesByTool,
171
- idPrefix,
172
- }: {
173
- readonly value: string | null;
174
- readonly badgesByTool: Readonly<Record<string, readonly string[]>> | undefined;
175
- readonly idPrefix: string;
176
- }): ReactNode {
177
- if (value === null || badgesByTool === undefined || (badgesByTool[value]?.length ?? 0) === 0) {
178
- return null;
179
- }
180
- return (
181
- <Tooltip content={BADGES_NOTE}>
182
- <span
183
- className="tai-row"
184
- data-testid={`${idPrefix}-badges`}
185
- style={{ gap: 'var(--tai-space-1)' }}
186
- >
187
- {(badgesByTool[value] ?? []).map((badge) => (
188
- <Badge key={badge} variant="neutral">
189
- {badge}
190
- </Badge>
191
- ))}
192
- </span>
193
- </Tooltip>
194
- );
195
- }
@@ -3,7 +3,8 @@
3
3
  * author `config` (`{ name, config }`) alongside bare-name elements. The editors
4
4
  * hold the full config-bearing elements as their value, so config rides through an
5
5
  * edit directly; these helpers project a combo to its bare extension names where a
6
- * name-only view is needed (a picker's selection, a branch-tool name, a badge row).
6
+ * name-only view is needed (a picker's selection, a branch-tool name, a badge row)
7
+ * and compare or check combos by those names.
7
8
  */
8
9
  import type { PresetExtensionElement } from '@tai42/api-client';
9
10
 
@@ -16,3 +17,16 @@ export function extensionElementName(element: PresetExtensionElement): string {
16
17
  export function comboElementNames(combo: readonly PresetExtensionElement[]): string[] {
17
18
  return combo.map(extensionElementName);
18
19
  }
20
+
21
+ /** Two combos are equal when their NAME sequences match (config is not part of identity). */
22
+ export function sameNames(a: readonly string[], b: readonly string[]): boolean {
23
+ return a.length === b.length && a.every((name, index) => name === b[index]);
24
+ }
25
+
26
+ /** The element names in a combo that are absent from the known catalog. */
27
+ export function unknownNames(
28
+ combo: readonly PresetExtensionElement[],
29
+ availableNames: ReadonlySet<string>,
30
+ ): string[] {
31
+ return comboElementNames(combo).filter((name) => !availableNames.has(name));
32
+ }