@tai42/studio-sdk 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.
Files changed (68) hide show
  1. package/dist/components/components.css +19 -0
  2. package/dist/components/templated-text-field.d.ts +98 -0
  3. package/dist/components/templated-text-field.d.ts.map +1 -0
  4. package/dist/components/templated-text-field.js +217 -0
  5. package/dist/components/templated-text-field.js.map +1 -0
  6. package/dist/hooks/useApi.d.ts +581 -238
  7. package/dist/hooks/useApi.d.ts.map +1 -1
  8. package/dist/index.d.ts +4 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/schema-editor/SchemaEditor.d.ts +8 -1
  13. package/dist/schema-editor/SchemaEditor.d.ts.map +1 -1
  14. package/dist/schema-editor/SchemaEditor.js +2 -2
  15. package/dist/schema-editor/SchemaEditor.js.map +1 -1
  16. package/dist/state-binding/BindingJqField.d.ts +8 -1
  17. package/dist/state-binding/BindingJqField.d.ts.map +1 -1
  18. package/dist/state-binding/BindingJqField.js +5 -2
  19. package/dist/state-binding/BindingJqField.js.map +1 -1
  20. package/dist/state-binding/BindingTemplatedJqField.d.ts +24 -0
  21. package/dist/state-binding/BindingTemplatedJqField.d.ts.map +1 -0
  22. package/dist/state-binding/BindingTemplatedJqField.js +7 -0
  23. package/dist/state-binding/BindingTemplatedJqField.js.map +1 -0
  24. package/dist/state-binding/InputInjectionRow.d.ts +4 -3
  25. package/dist/state-binding/InputInjectionRow.d.ts.map +1 -1
  26. package/dist/state-binding/InputInjectionRow.js +9 -9
  27. package/dist/state-binding/InputInjectionRow.js.map +1 -1
  28. package/dist/state-binding/StateAttachRow.d.ts +6 -4
  29. package/dist/state-binding/StateAttachRow.d.ts.map +1 -1
  30. package/dist/state-binding/StateAttachRow.js +13 -12
  31. package/dist/state-binding/StateAttachRow.js.map +1 -1
  32. package/dist/state-binding/StateBindingEditor.d.ts +4 -2
  33. package/dist/state-binding/StateBindingEditor.d.ts.map +1 -1
  34. package/dist/state-binding/StateBindingEditor.js +10 -8
  35. package/dist/state-binding/StateBindingEditor.js.map +1 -1
  36. package/dist/state-binding/SubjectScopeFields.d.ts +12 -9
  37. package/dist/state-binding/SubjectScopeFields.d.ts.map +1 -1
  38. package/dist/state-binding/SubjectScopeFields.js +5 -5
  39. package/dist/state-binding/SubjectScopeFields.js.map +1 -1
  40. package/dist/state-binding/UpdateRow.d.ts +4 -3
  41. package/dist/state-binding/UpdateRow.d.ts.map +1 -1
  42. package/dist/state-binding/UpdateRow.js +29 -16
  43. package/dist/state-binding/UpdateRow.js.map +1 -1
  44. package/dist/state-binding/index.d.ts +5 -1
  45. package/dist/state-binding/index.d.ts.map +1 -1
  46. package/dist/state-binding/index.js +2 -0
  47. package/dist/state-binding/index.js.map +1 -1
  48. package/dist/state-binding/templated-text-catalog.d.ts +21 -0
  49. package/dist/state-binding/templated-text-catalog.d.ts.map +1 -0
  50. package/dist/state-binding/templated-text-catalog.js +48 -0
  51. package/dist/state-binding/templated-text-catalog.js.map +1 -0
  52. package/dist/state-binding/types.d.ts +23 -2
  53. package/dist/state-binding/types.d.ts.map +1 -1
  54. package/package.json +2 -2
  55. package/src/components/components.css +19 -0
  56. package/src/components/templated-text-field.tsx +508 -0
  57. package/src/index.ts +13 -0
  58. package/src/schema-editor/SchemaEditor.tsx +9 -1
  59. package/src/state-binding/BindingJqField.tsx +12 -0
  60. package/src/state-binding/BindingTemplatedJqField.tsx +73 -0
  61. package/src/state-binding/InputInjectionRow.tsx +16 -7
  62. package/src/state-binding/StateAttachRow.tsx +19 -11
  63. package/src/state-binding/StateBindingEditor.tsx +14 -6
  64. package/src/state-binding/SubjectScopeFields.tsx +23 -15
  65. package/src/state-binding/UpdateRow.tsx +57 -24
  66. package/src/state-binding/index.ts +6 -0
  67. package/src/state-binding/templated-text-catalog.ts +69 -0
  68. package/src/state-binding/types.ts +31 -2
@@ -9,7 +9,7 @@
9
9
  * textarea) and paints from SDK tokens only.
10
10
  */
11
11
  import type { ReactNode } from 'react';
12
- import type { BindingSourceSchemas, BindingStateOption, BindingTemplateOption, StateBinding } from './types';
12
+ import type { BindingSourceSchemas, BindingStateOption, BindingTemplateOption, StateBinding, TemplatedTextCatalog } from './types';
13
13
  export interface StateBindingEditorProps {
14
14
  /** The binding, or `null` when the door binds no state. */
15
15
  readonly value: StateBinding | null;
@@ -30,6 +30,8 @@ export interface StateBindingEditorProps {
30
30
  readonly loading?: boolean;
31
31
  /** The catalog fetch failed. */
32
32
  readonly error?: string;
33
+ /** The stored templates a templated-text field's id picker offers, resolved by the door. */
34
+ readonly templatedTextTemplates?: TemplatedTextCatalog;
33
35
  }
34
- export declare function StateBindingEditor({ value, onChange, statesCatalog, templatesCatalog, sources, inherited, loading, error, }: StateBindingEditorProps): ReactNode;
36
+ export declare function StateBindingEditor({ value, onChange, statesCatalog, templatesCatalog, sources, inherited, loading, error, templatedTextTemplates, }: StateBindingEditorProps): ReactNode;
35
37
  //# sourceMappingURL=StateBindingEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateBindingEditor.d.ts","sourceRoot":"","sources":["../../src/state-binding/StateBindingEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EAErB,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,kFAAkF;IAClF,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtD,sFAAsF;IACtF,QAAQ,CAAC,gBAAgB,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC5D,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACzC,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,gCAAgC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAaD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,OAAe,EACf,KAAK,GACN,EAAE,uBAAuB,GAAG,SAAS,CA6FrC"}
1
+ {"version":3,"file":"StateBindingEditor.d.ts","sourceRoot":"","sources":["../../src/state-binding/StateBindingEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EAErB,YAAY,EACZ,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,kFAAkF;IAClF,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtD,sFAAsF;IACtF,QAAQ,CAAC,gBAAgB,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC5D,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACzC,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,gCAAgC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,QAAQ,CAAC,sBAAsB,CAAC,EAAE,oBAAoB,CAAC;CACxD;AAaD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,OAAe,EACf,KAAK,EACL,sBAAsB,GACvB,EAAE,uBAAuB,GAAG,SAAS,CAiGrC"}
@@ -5,13 +5,13 @@ function blankAttach() {
5
5
  return {
6
6
  state: '',
7
7
  templates: [],
8
- subject_expr: '',
8
+ subject_expr: { content: '' },
9
9
  scope_expr: null,
10
10
  input_injections: [],
11
11
  updates: [],
12
12
  };
13
13
  }
14
- export function StateBindingEditor({ value, onChange, statesCatalog, templatesCatalog, sources, inherited, loading = false, error, }) {
14
+ export function StateBindingEditor({ value, onChange, statesCatalog, templatesCatalog, sources, inherited, loading = false, error, templatedTextTemplates, }) {
15
15
  if (loading) {
16
16
  return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--tai-space-2)' }, children: [_jsx(Skeleton, { height: 32 }), _jsx(Skeleton, { height: 32 })] }));
17
17
  }
@@ -28,14 +28,16 @@ export function StateBindingEditor({ value, onChange, statesCatalog, templatesCa
28
28
  const inheritedAttach = attach.state === ''
29
29
  ? undefined
30
30
  : inherited?.states.find((entry) => entry.state === attach.state);
31
- // The subject is a required jq (contract: min_length=1); an empty one is
32
- // caught inline once a state is chosen, never sent for the server to 422.
33
- const subjectError = attach.state !== '' && attach.subject_expr.trim() === ''
34
- ? 'Subject is required.'
35
- : undefined;
31
+ // The subject is a required authored value; an empty one (no stored id and
32
+ // no inline text) is caught inline once a state is chosen, never sent for
33
+ // the server to 422.
34
+ const subjectEmpty = attach.subject_expr.id !== undefined
35
+ ? attach.subject_expr.id.trim() === ''
36
+ : (attach.subject_expr.content ?? '').trim() === '';
37
+ const subjectError = attach.state !== '' && subjectEmpty ? 'Subject is required.' : undefined;
36
38
  return (_jsx(StateAttachRow
37
39
  // Positional identity within a save; a state name may be blank while picking.
38
- , { attach: attach, statesCatalog: statesCatalog, templatesCatalog: templatesCatalog, sources: sources, subjectError: subjectError, inherited: inheritedAttach === undefined
40
+ , { attach: attach, statesCatalog: statesCatalog, templatesCatalog: templatesCatalog, sources: sources, subjectError: subjectError, templates: templatedTextTemplates, inherited: inheritedAttach === undefined
39
41
  ? undefined
40
42
  : {
41
43
  subject_expr: inheritedAttach.subject_expr,
@@ -1 +1 @@
1
- {"version":3,"file":"StateBindingEditor.js","sourceRoot":"","sources":["../../src/state-binding/StateBindingEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StateBindingEditor.js","sourceRoot":"","sources":["../../src/state-binding/StateBindingEditor.tsx"],"names":[],"mappings":"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"}
@@ -1,17 +1,20 @@
1
1
  /**
2
- * The subject + scope jq of one attached state: the SUBJECT expression (required)
3
- * yields either a bare record-key string or a full subject object; the optional SCOPE
4
- * expression is a boolean jq predicate — when it is false the state is skipped for the run.
2
+ * The subject + scope of one attached state: the SUBJECT (required) yields either a
3
+ * bare record-key string or a full subject object; the optional SCOPE is a boolean
4
+ * jq predicate — when it is false the state is skipped for the run. Each is an
5
+ * authored templated-text value (inline jq or a stored template that renders to it).
5
6
  */
6
7
  import type { ReactNode } from 'react';
7
- import { type TemplateJqSuggestion } from './BindingJqField';
8
+ import type { TemplateJqSuggestion } from './BindingJqField';
9
+ import type { TemplatedText, TemplatedTextCatalog } from './types';
8
10
  export interface SubjectScopeFieldsProps {
9
- readonly subjectExpr: string;
10
- readonly scopeExpr: string | null;
11
- readonly onSubjectChange: (value: string) => void;
12
- readonly onScopeChange: (value: string | null) => void;
11
+ readonly subjectExpr: TemplatedText;
12
+ readonly scopeExpr: TemplatedText | null;
13
+ readonly onSubjectChange: (value: TemplatedText) => void;
14
+ readonly onScopeChange: (value: TemplatedText | null) => void;
13
15
  readonly subjectError?: string;
14
16
  readonly suggestions?: readonly TemplateJqSuggestion[];
17
+ readonly templates?: TemplatedTextCatalog;
15
18
  }
16
- export declare function SubjectScopeFields({ subjectExpr, scopeExpr, onSubjectChange, onScopeChange, subjectError, suggestions, }: SubjectScopeFieldsProps): ReactNode;
19
+ export declare function SubjectScopeFields({ subjectExpr, scopeExpr, onSubjectChange, onScopeChange, subjectError, suggestions, templates, }: SubjectScopeFieldsProps): ReactNode;
17
20
  //# sourceMappingURL=SubjectScopeFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubjectScopeFields.d.ts","sourceRoot":"","sources":["../../src/state-binding/SubjectScopeFields.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACxD;AAED,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,SAAS,EACT,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,EAAE,uBAAuB,GAAG,SAAS,CAuBrC"}
1
+ {"version":3,"file":"SubjectScopeFields.d.ts","sourceRoot":"","sources":["../../src/state-binding/SubjectScopeFields.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAC3C;AAED,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,SAAS,EACT,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,SAAS,GACV,EAAE,uBAAuB,GAAG,SAAS,CA0BrC"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { BindingJqField } from './BindingJqField';
3
- export function SubjectScopeFields({ subjectExpr, scopeExpr, onSubjectChange, onScopeChange, subjectError, suggestions, }) {
4
- return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--tai-space-2)' }, children: [_jsx(BindingJqField, { label: "Subject", description: "The record key this binding reads and updates: a key string, or a full subject object.", value: subjectExpr, onChange: onSubjectChange, error: subjectError, suggestions: suggestions, placeholder: ".subject_id" }), _jsx(BindingJqField, { label: "Scope", description: "Optional. A jq condition; when it is false this state is skipped for the run.", value: scopeExpr ?? '', onChange: (next) => {
5
- onScopeChange(next.trim() === '' ? null : next);
6
- }, suggestions: suggestions })] }));
2
+ import { BindingTemplatedJqField } from './BindingTemplatedJqField';
3
+ export function SubjectScopeFields({ subjectExpr, scopeExpr, onSubjectChange, onScopeChange, subjectError, suggestions, templates, }) {
4
+ return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--tai-space-2)' }, children: [_jsx(BindingTemplatedJqField, { label: "Subject", required: true, description: "The record key this binding reads and updates: a key string, or a full subject object.", value: subjectExpr, error: subjectError, suggestions: suggestions, templates: templates, placeholder: ".subject_id", onChange: (next) => {
5
+ onSubjectChange(next ?? { content: '' });
6
+ } }), _jsx(BindingTemplatedJqField, { label: "Scope", description: "Optional. A jq condition; when it is false this state is skipped for the run.", value: scopeExpr, suggestions: suggestions, templates: templates, onChange: onScopeChange })] }));
7
7
  }
8
8
  //# sourceMappingURL=SubjectScopeFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubjectScopeFields.js","sourceRoot":"","sources":["../../src/state-binding/SubjectScopeFields.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,cAAc,EAA6B,MAAM,kBAAkB,CAAC;AAW7E,MAAM,UAAU,kBAAkB,CAAC,EACjC,WAAW,EACX,SAAS,EACT,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,GACa;IACxB,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,oBAAoB,EAAE,aACjF,KAAC,cAAc,IACb,KAAK,EAAC,SAAS,EACf,WAAW,EAAC,wFAAwF,EACpG,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAC,aAAa,GACzB,EACF,KAAC,cAAc,IACb,KAAK,EAAC,OAAO,EACb,WAAW,EAAC,+EAA+E,EAC3F,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBACjB,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClD,CAAC,EACD,WAAW,EAAE,WAAW,GACxB,IACE,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"SubjectScopeFields.js","sourceRoot":"","sources":["../../src/state-binding/SubjectScopeFields.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAcpE,MAAM,UAAU,kBAAkB,CAAC,EACjC,WAAW,EACX,SAAS,EACT,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,SAAS,GACe;IACxB,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,oBAAoB,EAAE,aACjF,KAAC,uBAAuB,IACtB,KAAK,EAAC,SAAS,EACf,QAAQ,QACR,WAAW,EAAC,wFAAwF,EACpG,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAC,aAAa,EACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBACjB,eAAe,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3C,CAAC,GACD,EACF,KAAC,uBAAuB,IACtB,KAAK,EAAC,OAAO,EACb,WAAW,EAAC,+EAA+E,EAC3F,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,aAAa,GACvB,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -5,15 +5,16 @@
5
5
  * the whole op batch itself. An optional op-id expression carries idempotency.
6
6
  */
7
7
  import type { ReactNode } from 'react';
8
- import { type TemplateJqSuggestion } from './BindingJqField';
8
+ import type { TemplateJqSuggestion } from './BindingJqField';
9
9
  import { type ResolvedTemplateJq } from './catalog';
10
- import type { BindingSourceSchemas, StateUpdate } from './types';
10
+ import type { BindingSourceSchemas, StateUpdate, TemplatedTextCatalog } from './types';
11
11
  export interface UpdateListProps {
12
12
  readonly updates: readonly StateUpdate[];
13
13
  readonly onChange: (updates: readonly StateUpdate[]) => void;
14
14
  readonly updateJq: readonly ResolvedTemplateJq[];
15
15
  readonly sources?: BindingSourceSchemas;
16
16
  readonly suggestions?: readonly TemplateJqSuggestion[];
17
+ readonly templates?: TemplatedTextCatalog;
17
18
  }
18
- export declare function UpdateList({ updates, onChange, updateJq, sources, suggestions, }: UpdateListProps): ReactNode;
19
+ export declare function UpdateList({ updates, onChange, updateJq, sources, suggestions, templates, }: UpdateListProps): ReactNode;
19
20
  //# sourceMappingURL=UpdateRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateRow.d.ts","sourceRoot":"","sources":["../../src/state-binding/UpdateRow.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAa,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA+HjE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACxD;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAW,GACZ,EAAE,eAAe,GAAG,SAAS,CAoC7B"}
1
+ {"version":3,"file":"UpdateRow.d.ts","sourceRoot":"","sources":["../../src/state-binding/UpdateRow.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAa,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AA2JvF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAC3C;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAW,EACX,SAAS,GACV,EAAE,eAAe,GAAG,SAAS,CAqC7B"}
@@ -3,9 +3,10 @@ import { Badge } from '../components/badge';
3
3
  import { Button } from '../components/primitives';
4
4
  import { Field } from '../components/field';
5
5
  import { Select } from '../components/select';
6
+ import { TemplatedTextField } from '../components/templated-text-field';
6
7
  import { CloseIcon } from '../components/icons';
7
8
  import { AdapterMapping } from './AdapterMapping';
8
- import { BindingJqField } from './BindingJqField';
9
+ import { BindingTemplatedJqField } from './BindingTemplatedJqField';
9
10
  import { findByRef } from './catalog';
10
11
  const CUSTOM = '__custom__';
11
12
  function optionLabel(entry) {
@@ -18,7 +19,7 @@ function writesLabel(entry) {
18
19
  return null;
19
20
  return entry.writes.map((path) => path.join('.')).join(', ');
20
21
  }
21
- function UpdateRowEditor({ update, index, updateJq, sources, suggestions, onChange, onRemove, }) {
22
+ function UpdateRowEditor({ update, index, updateJq, sources, suggestions, templates, onChange, onRemove, }) {
22
23
  const isCustom = update.jq !== null;
23
24
  const selectValue = isCustom ? CUSTOM : (update.template_jq ?? '');
24
25
  const resolved = update.template_jq !== null ? findByRef(update.template_jq, updateJq) : undefined;
@@ -37,7 +38,12 @@ function UpdateRowEditor({ update, index, updateJq, sources, suggestions, onChan
37
38
  flexWrap: 'wrap',
38
39
  }, children: [_jsx(Field, { label: `Update source ${String(index + 1)}`, hideLabel: true, children: _jsx(Select, { placeholder: "Choose a template jq", value: selectValue, onValueChange: (next) => {
39
40
  if (next === CUSTOM)
40
- onChange({ template_jq: null, jq: '', adapter: null, op_id: update.op_id });
41
+ onChange({
42
+ template_jq: null,
43
+ jq: { content: '' },
44
+ adapter: null,
45
+ op_id: update.op_id,
46
+ });
41
47
  else
42
48
  onChange({ template_jq: next, jq: null, adapter: null, op_id: update.op_id });
43
49
  }, groups: [
@@ -46,28 +52,35 @@ function UpdateRowEditor({ update, index, updateJq, sources, suggestions, onChan
46
52
  options: updateJq.map((entry) => ({ value: entry.ref, label: optionLabel(entry) })),
47
53
  },
48
54
  { label: 'Custom', options: [{ value: CUSTOM, label: 'Custom jq' }] },
49
- ] }) }), writes !== null ? _jsx(Badge, { variant: "neutral", children: `writes: ${writes}` }) : null, _jsx(Button, { type: "button", variant: "ghost", "aria-label": `Remove update ${String(index + 1)}`, onClick: onRemove, children: _jsx(CloseIcon, { "aria-hidden": "true" }) })] }), isCustom ? (_jsx(BindingJqField, { label: `Custom update jq ${String(index + 1)}`, description: "A jq over `{ record, output, input }` returning a template-relative op batch.", value: update.jq ?? '', onChange: (next) => {
50
- onChange({ template_jq: null, jq: next, adapter: null, op_id: update.op_id });
51
- }, suggestions: suggestions })) : (_jsx(Field, { label: "Adapter", group: true, children: _jsx(AdapterMapping
52
- // Remount on a template change so the mapping rebuilds from the newly
53
- // declared input (and re-seeds its shown default) instead of stale rows.
54
- , { declaredInput: resolved?.params ?? [], value: update.adapter ?? '', sources: sources, suggestions: suggestions, onChange: (adapterJq) => {
55
- onChange({ ...update, adapter: adapterJq });
56
- } }, resolved?.ref ?? '__none__') })), _jsx(BindingJqField, { label: "Op id", description: "Optional \u2014 an idempotency-key expression.", value: update.op_id ?? '', onChange: (next) => {
57
- onChange({ ...update, op_id: next.trim() === '' ? null : next });
58
- }, suggestions: suggestions })] }));
55
+ ] }) }), writes !== null ? _jsx(Badge, { variant: "neutral", children: `writes: ${writes}` }) : null, _jsx(Button, { type: "button", variant: "ghost", "aria-label": `Remove update ${String(index + 1)}`, onClick: onRemove, children: _jsx(CloseIcon, { "aria-hidden": "true" }) })] }), isCustom ? (_jsx(BindingTemplatedJqField, { label: `Custom update jq ${String(index + 1)}`, required: true, description: "A jq over `{ record, output, input }` returning a template-relative op batch.", value: update.jq, onChange: (next) => {
56
+ onChange({
57
+ template_jq: null,
58
+ jq: next ?? { content: '' },
59
+ adapter: null,
60
+ op_id: update.op_id,
61
+ });
62
+ }, suggestions: suggestions, templates: templates })) : (_jsx(TemplatedTextField
63
+ // Remount on a template change so the mapping rebuilds from the newly
64
+ // declared input (and re-seeds its shown default) instead of stale rows.
65
+ , { label: "Adapter", value: update.adapter, templates: templates?.templates, templatesLoading: templates?.loading, templatesError: templates?.error, onTemplatesRetry: templates?.onRetry, storageAbsent: templates?.storageAbsent, storagePresenceLoading: templates?.storagePresenceLoading, onChange: (next) => {
66
+ onChange({ ...update, adapter: next });
67
+ }, renderInline: ({ value: inlineValue, onChange: onInline }) => (_jsx(AdapterMapping, { declaredInput: resolved?.params ?? [], value: inlineValue, sources: sources, suggestions: suggestions, onChange: (adapterJq) => {
68
+ onInline(adapterJq ?? '');
69
+ } })) }, resolved?.ref ?? '__none__')), _jsx(BindingTemplatedJqField, { label: "Op id", description: "Optional \u2014 an idempotency-key expression.", value: update.op_id, onChange: (next) => {
70
+ onChange({ ...update, op_id: next });
71
+ }, suggestions: suggestions, templates: templates })] }));
59
72
  }
60
- export function UpdateList({ updates, onChange, updateJq, sources, suggestions, }) {
73
+ export function UpdateList({ updates, onChange, updateJq, sources, suggestions, templates, }) {
61
74
  const add = () => {
62
75
  const first = updateJq[0];
63
76
  const next = first !== undefined
64
77
  ? { template_jq: first.ref, jq: null, adapter: null, op_id: null }
65
- : { template_jq: null, jq: '', adapter: null, op_id: null };
78
+ : { template_jq: null, jq: { content: '' }, adapter: null, op_id: null };
66
79
  onChange([...updates, next]);
67
80
  };
68
81
  return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--tai-space-2)' }, children: [updates.map((update, index) => (_jsx(UpdateRowEditor
69
82
  // Rows are positional; the index is their stable identity within a save.
70
- , { update: update, index: index, updateJq: updateJq, sources: sources, suggestions: suggestions, onChange: (next) => {
83
+ , { update: update, index: index, updateJq: updateJq, sources: sources, suggestions: suggestions, templates: templates, onChange: (next) => {
71
84
  onChange(updates.map((current, position) => (position === index ? next : current)));
72
85
  }, onRemove: () => {
73
86
  onChange(updates.filter((_, position) => position !== index));
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateRow.js","sourceRoot":"","sources":["../../src/state-binding/UpdateRow.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UpdateRow.js","sourceRoot":"","sources":["../../src/state-binding/UpdateRow.tsx"],"names":[],"mappings":"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"}
@@ -20,10 +20,14 @@ export { SubjectScopeFields } from './SubjectScopeFields';
20
20
  export type { SubjectScopeFieldsProps } from './SubjectScopeFields';
21
21
  export { BindingJqField, appendTjq } from './BindingJqField';
22
22
  export type { BindingJqFieldProps, TemplateJqSuggestion } from './BindingJqField';
23
+ export { BindingTemplatedJqField } from './BindingTemplatedJqField';
24
+ export type { BindingTemplatedJqFieldProps } from './BindingTemplatedJqField';
23
25
  export { resolveTemplateJq, findByRef, resolveCallName } from './catalog';
24
26
  export type { ResolvedTemplateJq } from './catalog';
27
+ export { templatedTextCatalog } from './templated-text-catalog';
28
+ export type { StoragePresenceQueryLike, TemplateNamesQueryLike } from './templated-text-catalog';
25
29
  export { templatesCatalogFromList, statesCatalogFromList, fieldPathsFromSchema, } from './build-catalog';
26
30
  export { compileAdapter, rowValueJq, fieldPathToJq, jqKey, defaultRowsForInput, parseAdapter, parseFieldPath, generateTemplateCall, parseTemplateCall, encodeTemplateSegment, } from './adapter';
27
31
  export type { MappingRow, MappingSource, FieldSource, LiteralSource, JqSource, FieldRoot, AdapterCompileResult, } from './adapter';
28
- export type { BindingStateOption, BindingTemplateOption, BindingTemplateJqOption, BindingSourceSchemas, SchemaFieldPath, StateBinding, StateAttach, StateInjection, StateUpdate, } from './types';
32
+ export type { BindingStateOption, BindingTemplateOption, BindingTemplateJqOption, BindingSourceSchemas, SchemaFieldPath, StateBinding, StateAttach, StateInjection, StateUpdate, TemplatedText, TemplatedTextCatalog, } from './types';
29
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state-binding/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC1E,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,KAAK,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,GACZ,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state-binding/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC1E,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,KAAK,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
@@ -12,7 +12,9 @@ export { UpdateList } from './UpdateRow';
12
12
  export { AdapterMapping } from './AdapterMapping';
13
13
  export { SubjectScopeFields } from './SubjectScopeFields';
14
14
  export { BindingJqField, appendTjq } from './BindingJqField';
15
+ export { BindingTemplatedJqField } from './BindingTemplatedJqField';
15
16
  export { resolveTemplateJq, findByRef, resolveCallName } from './catalog';
17
+ export { templatedTextCatalog } from './templated-text-catalog';
16
18
  export { templatesCatalogFromList, statesCatalogFromList, fieldPathsFromSchema, } from './build-catalog';
17
19
  export { compileAdapter, rowValueJq, fieldPathToJq, jqKey, defaultRowsForInput, parseAdapter, parseFieldPath, generateTemplateCall, parseTemplateCall, encodeTemplateSegment, } from './adapter';
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state-binding/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE1E,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,KAAK,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state-binding/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,KAAK,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { TemplatedTextCatalog } from './types';
2
+ /** The storage-presence query result (`GET /api/storage`) fields this helper reads. */
3
+ export interface StoragePresenceQueryLike {
4
+ readonly data?: {
5
+ readonly present: boolean;
6
+ };
7
+ readonly isPending: boolean;
8
+ readonly isError: boolean;
9
+ readonly error: unknown;
10
+ readonly refetch: () => unknown;
11
+ }
12
+ /** The stored-template-names query result (`GET /api/templates`) fields this helper reads. */
13
+ export interface TemplateNamesQueryLike {
14
+ readonly data?: readonly string[];
15
+ readonly isPending: boolean;
16
+ readonly isError: boolean;
17
+ readonly error: unknown;
18
+ readonly refetch: () => unknown;
19
+ }
20
+ export declare function templatedTextCatalog(storage: StoragePresenceQueryLike, templates: TemplateNamesQueryLike): TemplatedTextCatalog;
21
+ //# sourceMappingURL=templated-text-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templated-text-catalog.d.ts","sourceRoot":"","sources":["../../src/state-binding/templated-text-catalog.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,uFAAuF;AACvF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;CACjC;AAED,8FAA8F;AAC9F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;CACjC;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,wBAAwB,EACjC,SAAS,EAAE,sBAAsB,GAChC,oBAAoB,CA0BtB"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Builds the {@link TemplatedTextCatalog} a door form feeds its templated-text
3
+ * fields, from the two queries every such form already runs: the storage-presence
4
+ * signal (`GET /api/storage`) and the stored-template name list (`GET /api/templates`).
5
+ *
6
+ * Storage is dead by default — a deployment with no storage backend is supported —
7
+ * and the template list door cannot answer without one. So the CALLER gates its
8
+ * template-names query on presence (`enabled: storage.data?.present === true`), and
9
+ * this helper maps the two query states onto the catalog the field reads: when
10
+ * storage is absent it exposes no templates and marks the field absent (the field
11
+ * then offers no stored source); when present it exposes the fetched names. A
12
+ * presence-fetch failure surfaces ahead of a template-fetch failure, since presence
13
+ * is the prerequisite.
14
+ *
15
+ * It takes the query RESULTS structurally (the fields it reads), so this module adds
16
+ * no data-layer dependency to the SDK.
17
+ */
18
+ import { errorMessage } from '../errors';
19
+ export function templatedTextCatalog(storage, templates) {
20
+ const presenceKnown = storage.data !== undefined;
21
+ const present = storage.data?.present === true;
22
+ // A presence failure matters only until presence is first known: once it is in
23
+ // hand, a later background-refetch failure must not blow away a field already
24
+ // working from it. Presence is the prerequisite of the catalog, so its failure
25
+ // surfaces ahead of a catalog-fetch failure.
26
+ const presenceFailed = storage.isError && !presenceKnown;
27
+ return {
28
+ // Never expose template names while storage is absent or unknown — the caller's
29
+ // gate keeps the list query from firing there, and its pending/stale data must
30
+ // not leak into a picker the field will not show.
31
+ templates: present ? (templates.data ?? []).map((id) => ({ id })) : [],
32
+ loading: present && templates.isPending,
33
+ error: presenceFailed
34
+ ? errorMessage(storage.error)
35
+ : templates.isError
36
+ ? errorMessage(templates.error)
37
+ : undefined,
38
+ onRetry: () => {
39
+ if (presenceFailed)
40
+ void storage.refetch();
41
+ else
42
+ void templates.refetch();
43
+ },
44
+ storageAbsent: storage.data?.present === false,
45
+ storagePresenceLoading: !presenceKnown && storage.isPending,
46
+ };
47
+ }
48
+ //# sourceMappingURL=templated-text-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templated-text-catalog.js","sourceRoot":"","sources":["../../src/state-binding/templated-text-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAsBzC,MAAM,UAAU,oBAAoB,CAClC,OAAiC,EACjC,SAAiC;IAEjC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,+EAA+E;IAC/E,8EAA8E;IAC9E,+EAA+E;IAC/E,6CAA6C;IAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC;IACzD,OAAO;QACL,gFAAgF;QAChF,+EAA+E;QAC/E,kDAAkD;QAClD,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACtE,OAAO,EAAE,OAAO,IAAI,SAAS,CAAC,SAAS;QACvC,KAAK,EAAE,cAAc;YACnB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7B,CAAC,CAAC,SAAS,CAAC,OAAO;gBACjB,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC/B,CAAC,CAAC,SAAS;QACf,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,cAAc;gBAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;;gBACtC,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC;QACD,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK;QAC9C,sBAAsB,EAAE,CAAC,aAAa,IAAI,OAAO,CAAC,SAAS;KAC5D,CAAC;AACJ,CAAC"}
@@ -7,8 +7,29 @@
7
7
  * the states it may bind, the templates each may attach, and — when a schema is
8
8
  * known — the fields a picker offers.
9
9
  */
10
- import type { StateBinding, StateAttach, StateInjection, StateUpdate } from '@tai42/api-client';
11
- export type { StateBinding, StateAttach, StateInjection, StateUpdate };
10
+ import type { StateBinding, StateAttach, StateInjection, StateUpdate, TemplatedText } from '@tai42/api-client';
11
+ import type { TemplatedTextTemplateOption } from '../components/templated-text-field';
12
+ export type { StateBinding, StateAttach, StateInjection, StateUpdate, TemplatedText };
13
+ /**
14
+ * The stored templates a {@link TemplatedText} field's id picker offers, with the
15
+ * fetch's loading/error state — resolved by the door screen and passed to the
16
+ * editor, which holds no data edge of its own. Absent leaves every templated-text
17
+ * field with the inline source only.
18
+ */
19
+ export interface TemplatedTextCatalog {
20
+ readonly templates?: readonly TemplatedTextTemplateOption[];
21
+ readonly loading?: boolean;
22
+ readonly error?: string;
23
+ readonly onRetry?: () => void;
24
+ /**
25
+ * Storage is registered absent (`GET /api/storage` → `present: false`), so the
26
+ * catalog was not fetched and the stored source is not offered on the fields this
27
+ * catalog feeds; an already-stored id is shown read-only.
28
+ */
29
+ readonly storageAbsent?: boolean;
30
+ /** Storage presence is not yet known — the fields render a placeholder, not a toggle. */
31
+ readonly storagePresenceLoading?: boolean;
32
+ }
12
33
  /** One selectable field of a schema: the record path + a human label. */
13
34
  export interface SchemaFieldPath {
14
35
  readonly path: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state-binding/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhG,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAEvE,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;CAClD;AAED,2FAA2F;AAC3F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACzD;AAED,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state-binding/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEtF,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAEtF;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,yFAAyF;IACzF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;CAClD;AAED,2FAA2F;AAC3F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACzD;AAED,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tai42/studio-sdk",
3
- "version": "14.0.0",
3
+ "version": "16.0.0",
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.2",
97
97
  "@radix-ui/react-tabs": "^1.1.21",
98
98
  "@radix-ui/react-tooltip": "^1.2.11",
99
- "@tai42/api-client": "14.0.0"
99
+ "@tai42/api-client": "16.0.0"
100
100
  },
101
101
  "scripts": {
102
102
  "build": "tsc -b tsconfig.build.json && node scripts/copy-assets.mjs",
@@ -1953,6 +1953,25 @@
1953
1953
  border: 0;
1954
1954
  }
1955
1955
 
1956
+ /* A `TemplatedTextField` renders its label as a group header above the source
1957
+ toggle, so an inline jq editor placed under that header (`@tai42/jq-studio`'s
1958
+ `JqField`, the direct child of this wrapper) hides its OWN visible label — the
1959
+ header is the single visible label. The label element stays in the DOM, so its
1960
+ `<label for>` keeps naming the control and the visual-editor door keeps its
1961
+ accessible name; only the paint is dropped. Scoped to a direct child so a
1962
+ mapping editor's nested field labels are untouched. */
1963
+ .tai-templated-inline--grouped > .jqs-field > .jqs-field__label {
1964
+ position: absolute;
1965
+ width: 1px;
1966
+ height: 1px;
1967
+ margin: -1px;
1968
+ padding: 0;
1969
+ overflow: hidden;
1970
+ clip-path: inset(50%);
1971
+ white-space: nowrap;
1972
+ border: 0;
1973
+ }
1974
+
1956
1975
  /* -- Shell -----------------------------------------------------------------------
1957
1976
  The application frame: a fixed-width sidebar beside a scrolling main
1958
1977
  column at >=1024, a 72 px labelled icon rail from 640, and a sticky top bar