@vertesia/appgen-docs 1.5.0-dev.20260807.073259Z → 1.5.0-dev.20260901.005903Z

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.
@@ -0,0 +1,47 @@
1
+ # Installed Capability Runtime Execution
2
+
3
+ Use the root `VertesiaClient` for app-owned interaction execution. For an immutable candidate, call `client.withAppVersion(versionId)` once before any Studio or Store request.
4
+
5
+ ## Interactions
6
+
7
+ `executeByName` accepts the portable app interaction ref and an `InteractionExecutionPayload`. Put prompt inputs under `data`; the returned result is already enhanced with typed accessors.
8
+
9
+ ```ts
10
+ interface StatusBriefingInput {
11
+ project_id: string;
12
+ tasks: Array<{ id: string; title: string; status: string }>;
13
+ }
14
+
15
+ interface StatusBriefingResult {
16
+ summary: string;
17
+ evidence: Array<{ id: string; title: string; status: string }>;
18
+ }
19
+
20
+ const execution = await client.interactions.executeByName<StatusBriefingResult, StatusBriefingInput>(
21
+ `app:${APP_NAME}:main:project-status-briefing`,
22
+ { data: input },
23
+ );
24
+ const briefing = execution.result.object();
25
+ ```
26
+
27
+ Use `execution.result.text()` for text output and `execution.result.objects()` for multiple JSON results. Validate the parsed object against the exact durable input snapshot before displaying or persisting it. Do not reimplement `/api/v1/execute` with raw `fetch`.
28
+
29
+ ## Processes and activities
30
+
31
+ Installed app activities are internal process nodes. The root SDK has no `client.activities` execution API, so exercise an activity through a packaged process that references it. Start processes through the Store agent API; `client.processes` manages definitions and has no `executeByName` method.
32
+
33
+ ```ts
34
+ const run = await client.agents.start({
35
+ process_id: `app:${APP_NAME}:milestone-transition`,
36
+ run_type: 'programmatic',
37
+ data: { milestone_id, target_status: 'complete' },
38
+ });
39
+ await client.agents.streamMessages(run.id);
40
+ const terminal = await client.agents.retrieveProcess(run.id);
41
+ const { context } = await client.agents.getContext(run.id);
42
+ if (terminal.status !== 'completed') {
43
+ throw new Error(String(context.error ?? terminal.status));
44
+ }
45
+ ```
46
+
47
+ A package summary containing an activity proves registration only, not runtime execution. Unit-test the exact interaction and process call shapes with focused SDK mocks before constructing an immutable candidate. Never invent `client.activities.executeByName` or `client.processes.executeByName`.
@@ -20,6 +20,7 @@ When creating or searching Store objects, pass the app type code string:
20
20
 
21
21
  ```ts
22
22
  await client.objects.create({
23
+ name: 'Supplier review',
23
24
  type: CASE_TYPE,
24
25
  properties: {
25
26
  title: 'Supplier review',
@@ -4,6 +4,8 @@ Use the Vertesia client from `useUserSession()` in browser code and the injected
4
4
 
5
5
  App-owned types are referenced by their **in-code string** `app:<app-name>:<local>`, never a resolved ObjectId — pass the string straight to `search`/`create` and derive it from a single `APP_NAME` constant (= package.json name = VITE_APP_NAME = manifest name) so the app stays portable. See `package-types.md` for the rule.
6
6
 
7
+ Every `objects.create` payload requires a top-level `name`. A title inside `properties` does not satisfy this Store contract. Use a stable human-readable value, normally the record title, and keep it in sync when the product renames the record.
8
+
7
9
  ## Search
8
10
 
9
11
  ```ts
@@ -63,6 +65,7 @@ async function seedCase(client: VertesiaClient, record: { external_id: string; t
63
65
  }
64
66
 
65
67
  return client.objects.create({
68
+ name: record.title,
66
69
  type: CASE_TYPE,
67
70
  properties: { ...record, seed_marker: SEED_MARKER },
68
71
  });
@@ -75,6 +78,7 @@ For document, review, and intake apps, attach realistic source content to repres
75
78
 
76
79
  ```ts
77
80
  await client.objects.create({
81
+ name: 'Screening evidence',
78
82
  type: `app:${APP_NAME}:evidence`,
79
83
  properties: {
80
84
  title: 'Screening evidence',
@@ -16,6 +16,7 @@ export * from './Divider.js';
16
16
  export * from './EmptyCollection.js';
17
17
  export * from './FileUpload.js';
18
18
  export * from './FormItem.js';
19
+ export * from './InfoTip.js';
19
20
  export * from './InputList.js';
20
21
  export * from './Link.js';
21
22
  export * from './MenuList.js';
@@ -55,6 +56,7 @@ export * from './LanguageSwitcher';
55
56
  export * from './label';
56
57
  export * from './MessageBox';
57
58
  export * from './modal';
59
+ export * from './overflowTabs';
58
60
  export * from './Panel';
59
61
  export * from './popover';
60
62
  export * from './radioGroup';
@@ -1010,13 +1012,20 @@ interface GenericPageNavHeaderProps {
1010
1012
  children?: ReactNode;
1011
1013
  className?: string;
1012
1014
  useDynamicBreadcrumbs?: boolean;
1015
+ /**
1016
+ * Parent page linked from the breadcrumbs when there is no history chain to walk (the user
1017
+ * landed on this URL directly). Give it as an absolute app path, including the module mount.
1018
+ */
1019
+ parentPath?: string;
1020
+ /** Label for {@link parentPath}; defaults to its last segment, title-cased. */
1021
+ parentLabel?: string;
1013
1022
  }
1014
1023
  interface BreadcrumbElementProps {
1015
1024
  href?: string;
1016
1025
  clearBreadcrumbs?: boolean;
1017
1026
  children?: ReactNode;
1018
1027
  }
1019
- export declare function GenericPageNavHeader({ className, children, title, description, actions, breadcrumbs, useDynamicBreadcrumbs, }: GenericPageNavHeaderProps): JSX.Element;
1028
+ export declare function GenericPageNavHeader({ className, children, title, description, actions, breadcrumbs, useDynamicBreadcrumbs, parentPath, parentLabel, }: GenericPageNavHeaderProps): JSX.Element;
1020
1029
  export {};
1021
1030
 
1022
1031
  // -----------------------------------------------------------------------------
@@ -1068,6 +1077,12 @@ export interface ModernAgentConversationProps {
1068
1077
  onShowDetails?: () => void;
1069
1078
  /** Whether workflow control actions such as cancel should be shown. */
1070
1079
  allowWorkflowControl?: boolean;
1080
+ /**
1081
+ * Workstream selected on mount instead of "all" — use it to open the conversation on one
1082
+ * sub-agent (a process agent node's workstream is its node id). Initial value only; the user's
1083
+ * later tab choices win.
1084
+ */
1085
+ initialWorkstream?: string;
1071
1086
  /** Called when files are dropped/pasted/selected */
1072
1087
  onFilesSelected?: (files: File[]) => void;
1073
1088
  /** Currently uploaded files to display */