@tangle-network/agent-app 0.60.178 → 0.60.180
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-profiles/d1.js +3 -3
- package/dist/agent-profiles/index.js +3 -3
- package/dist/assistant/index.js +7 -5
- package/dist/assistant/index.js.map +1 -1
- package/dist/channels/index.js +1 -1
- package/dist/chat-routes/index.js +4 -4
- package/dist/{chunk-GIJY3YCH.js → chunk-3RHAF2P5.js} +11 -13
- package/dist/chunk-3RHAF2P5.js.map +1 -0
- package/dist/{chunk-IAFPBYQQ.js → chunk-6ZUVYAKB.js} +506 -315
- package/dist/chunk-6ZUVYAKB.js.map +1 -0
- package/dist/{chunk-ER3KSBA4.js → chunk-75ZIWV4U.js} +4 -4
- package/dist/{chunk-7PSYT35Z.js → chunk-7BYY7QKC.js} +5 -5
- package/dist/{chunk-7PSYT35Z.js.map → chunk-7BYY7QKC.js.map} +1 -1
- package/dist/chunk-A2GG4D4A.js +43 -0
- package/dist/chunk-A2GG4D4A.js.map +1 -0
- package/dist/{chunk-6CKNC32J.js → chunk-AJZ3EJB5.js} +2 -2
- package/dist/chunk-ATQQCG4I.js +194 -0
- package/dist/chunk-ATQQCG4I.js.map +1 -0
- package/dist/{chunk-4WEUWCA4.js → chunk-EQRVOMMS.js} +2 -2
- package/dist/{chunk-ARBBJWZA.js → chunk-KOTNMTHV.js} +3 -3
- package/dist/{chunk-LSUELMHY.js → chunk-LN5RBVGP.js} +6 -33
- package/dist/{chunk-LSUELMHY.js.map → chunk-LN5RBVGP.js.map} +1 -1
- package/dist/{chunk-CPNJRLPN.js → chunk-WSEXFTN4.js} +46 -7
- package/dist/chunk-WSEXFTN4.js.map +1 -0
- package/dist/{chunk-NO2YNV5C.js → chunk-YXLN4PXK.js} +2 -2
- package/dist/hub-approvals/index.js +1 -1
- package/dist/hub-approvals/types.d.ts +16 -1
- package/dist/hub-approvals-react/feedback.d.ts +25 -5
- package/dist/hub-approvals-react/index.d.ts +1 -0
- package/dist/hub-approvals-react/index.js +413 -257
- package/dist/hub-approvals-react/index.js.map +1 -1
- package/dist/hub-approvals-react/media.d.ts +12 -0
- package/dist/integrations-react/index.js +1 -1
- package/dist/preset-cloudflare/index.js +2 -2
- package/dist/public-consultation/index.d.ts +1 -1
- package/dist/sandbox/index.js +4 -4
- package/dist/stories/app-shell/interaction-evidence.d.ts +31 -0
- package/dist/studio-react/index.js +2 -2
- package/dist/theme/tokens.css +158 -0
- package/dist/tools/index.js +4 -4
- package/dist/web-react/action-dialog.d.ts +2 -2
- package/dist/web-react/agent-profile-editor.js +1 -1
- package/dist/web-react/agent-profile-form-kit.d.ts +1 -1
- package/dist/web-react/async/index.js +1 -1
- package/dist/web-react/index.d.ts +2 -0
- package/dist/web-react/index.js +12 -5
- package/dist/web-react/review-inbox.d.ts +33 -0
- package/dist/work-product/index.js +2 -2
- package/dist/workspace-react/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-CPNJRLPN.js.map +0 -1
- package/dist/chunk-GIJY3YCH.js.map +0 -1
- package/dist/chunk-IAFPBYQQ.js.map +0 -1
- package/dist/chunk-QJYJOMMO.js +0 -78
- package/dist/chunk-QJYJOMMO.js.map +0 -1
- /package/dist/{chunk-ER3KSBA4.js.map → chunk-75ZIWV4U.js.map} +0 -0
- /package/dist/{chunk-6CKNC32J.js.map → chunk-AJZ3EJB5.js.map} +0 -0
- /package/dist/{chunk-4WEUWCA4.js.map → chunk-EQRVOMMS.js.map} +0 -0
- /package/dist/{chunk-ARBBJWZA.js.map → chunk-KOTNMTHV.js.map} +0 -0
- /package/dist/{chunk-NO2YNV5C.js.map → chunk-YXLN4PXK.js.map} +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { HubActionPreview } from '../hub-approvals';
|
|
2
|
+
type Post = Extract<HubActionPreview, {
|
|
3
|
+
kind: 'post';
|
|
4
|
+
}>;
|
|
5
|
+
/** The host resolves frozen, authorized bytes before rendering. No URLs are fetched here. */
|
|
6
|
+
export declare function previewMediaSource(value: string | undefined, kind: 'image' | 'video'): string | undefined;
|
|
7
|
+
/** Source-supplied payload and media inside platform feed frames. No transport or effect callbacks. */
|
|
8
|
+
export declare function HubMediaPreview({ preview, account }: {
|
|
9
|
+
preview: Post;
|
|
10
|
+
account?: string | null;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -12,8 +12,8 @@ import {
|
|
|
12
12
|
} from "../chunk-4LBCTFBP.js";
|
|
13
13
|
import {
|
|
14
14
|
assertRenderUiSchema
|
|
15
|
-
} from "../chunk-
|
|
16
|
-
import "../chunk-
|
|
15
|
+
} from "../chunk-YXLN4PXK.js";
|
|
16
|
+
import "../chunk-7BYY7QKC.js";
|
|
17
17
|
|
|
18
18
|
// src/preset-cloudflare/workflow-instance.ts
|
|
19
19
|
async function ensureCloudflareWorkflowInstance(binding, input) {
|
|
@@ -102,8 +102,8 @@ interface GatewayConsultationContext {
|
|
|
102
102
|
/** Compose gateway admission, scoped knowledge and the maintained persisted chat route. */
|
|
103
103
|
export declare function createPublicConsultation(options: PublicConsultationOptions): {
|
|
104
104
|
authorizeConsumer(agent: ConsultationAgent, consumer: ConsultationConsumer): Promise<{
|
|
105
|
-
allow: true;
|
|
106
105
|
reason?: undefined;
|
|
106
|
+
allow: true;
|
|
107
107
|
code?: undefined;
|
|
108
108
|
} | {
|
|
109
109
|
allow: false;
|
package/dist/sandbox/index.js
CHANGED
|
@@ -138,13 +138,13 @@ import {
|
|
|
138
138
|
} from "../chunk-4LBCTFBP.js";
|
|
139
139
|
import "../chunk-VBRUG4N5.js";
|
|
140
140
|
import "../chunk-LWSJK546.js";
|
|
141
|
-
import "../chunk-
|
|
141
|
+
import "../chunk-75ZIWV4U.js";
|
|
142
142
|
import "../chunk-6A7MYOUI.js";
|
|
143
143
|
import "../chunk-S5SRJJQG.js";
|
|
144
|
-
import "../chunk-
|
|
145
|
-
import "../chunk-
|
|
144
|
+
import "../chunk-YXLN4PXK.js";
|
|
145
|
+
import "../chunk-AJZ3EJB5.js";
|
|
146
146
|
import "../chunk-UGWQLQDS.js";
|
|
147
|
-
import "../chunk-
|
|
147
|
+
import "../chunk-7BYY7QKC.js";
|
|
148
148
|
import "../chunk-D6UJEOZQ.js";
|
|
149
149
|
export {
|
|
150
150
|
DEFAULT_ESCALATION_TOOLS,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
declare const interactionProtocol: {
|
|
2
|
+
readonly batches: 2;
|
|
3
|
+
readonly attemptsPerBatch: 40;
|
|
4
|
+
readonly conditions: readonly ['normal', 'interrupted', 'reduced-motion'];
|
|
5
|
+
readonly cacheStates: readonly ['cold', 'warm'];
|
|
6
|
+
readonly selection: 'Consecutive browser input starts; retain failures and identify capture exclusions before replacement.';
|
|
7
|
+
readonly percentile: 'Sorted nearest rank ceil(p * n); separate action, condition, batch and cold/warm context.';
|
|
8
|
+
readonly cold: 'New browser context without application cache.';
|
|
9
|
+
readonly warm: 'Same loaded workflow after initialization.';
|
|
10
|
+
readonly spacing: 'Reset the workflow and settle its visible state before the next declared attempt.';
|
|
11
|
+
readonly observationWindow: 'Maximum computed interaction role time on the input target; missing or invalid roles retain an unresolved sample without observation.';
|
|
12
|
+
readonly presentation: 'DOM state and frame callbacks are bounds, not a presented-frame measurement. Calibrated trace/recording evidence is required.';
|
|
13
|
+
};
|
|
14
|
+
type Batch = {
|
|
15
|
+
condition: typeof interactionProtocol.conditions[number];
|
|
16
|
+
cache: 'cold' | 'warm';
|
|
17
|
+
batch: number;
|
|
18
|
+
};
|
|
19
|
+
/** The catalog owns these observations; capture scripts only export them. */
|
|
20
|
+
export declare function useInteractionEvidence(): import("react").RefObject<HTMLElement | null>;
|
|
21
|
+
declare global {
|
|
22
|
+
interface Window {
|
|
23
|
+
__agentAppInteractionEvidence?: {
|
|
24
|
+
protocol: typeof interactionProtocol;
|
|
25
|
+
declareBatch(batch: Batch): void;
|
|
26
|
+
snapshot(): unknown;
|
|
27
|
+
calibrate(): Promise<unknown>;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -39,8 +39,8 @@ import {
|
|
|
39
39
|
} from "../chunk-6PRQ45QE.js";
|
|
40
40
|
import {
|
|
41
41
|
useInfiniteScroll
|
|
42
|
-
} from "../chunk-
|
|
43
|
-
import "../chunk-
|
|
42
|
+
} from "../chunk-EQRVOMMS.js";
|
|
43
|
+
import "../chunk-A2GG4D4A.js";
|
|
44
44
|
import "../chunk-SJWIZT7B.js";
|
|
45
45
|
import {
|
|
46
46
|
CheckGlyph,
|
package/dist/theme/tokens.css
CHANGED
|
@@ -1745,6 +1745,164 @@
|
|
|
1745
1745
|
--text-dim: #9496bc;
|
|
1746
1746
|
}
|
|
1747
1747
|
}
|
|
1748
|
+
/* Framework-neutral opt-in presentation. Load fonts from the application's origin. */
|
|
1749
|
+
[data-typography="expressive"],
|
|
1750
|
+
[data-typography="expressive"] :is([data-theme], [data-sandbox-ui], [data-sandbox-theme], .dark, .light) {
|
|
1751
|
+
--font-display: "Outfit", ui-sans-serif, system-ui, sans-serif;
|
|
1752
|
+
--font-sans: "Geist", ui-sans-serif, system-ui, sans-serif;
|
|
1753
|
+
--font-mono: "Geist Mono", ui-monospace, monospace;
|
|
1754
|
+
font-family: var(--font-sans);
|
|
1755
|
+
}
|
|
1756
|
+
.tangle-intro {
|
|
1757
|
+
position: relative;
|
|
1758
|
+
isolation: isolate;
|
|
1759
|
+
overflow: clip;
|
|
1760
|
+
padding: var(--hero-padding-top) var(--hero-gutter) var(--hero-padding-bottom);
|
|
1761
|
+
text-align: center;
|
|
1762
|
+
color: hsl(var(--foreground));
|
|
1763
|
+
background: hsl(var(--background));
|
|
1764
|
+
}
|
|
1765
|
+
.tangle-intro::before {
|
|
1766
|
+
content: "";
|
|
1767
|
+
position: absolute;
|
|
1768
|
+
inset: 0;
|
|
1769
|
+
z-index: -1;
|
|
1770
|
+
pointer-events: none;
|
|
1771
|
+
opacity: var(--hero-atmosphere-opacity);
|
|
1772
|
+
background: radial-gradient(ellipse at 50% 0%, hsl(var(--primary)), transparent 70%);
|
|
1773
|
+
}
|
|
1774
|
+
.tangle-intro[data-grid]::after {
|
|
1775
|
+
content: "";
|
|
1776
|
+
position: absolute;
|
|
1777
|
+
inset: 0;
|
|
1778
|
+
z-index: -1;
|
|
1779
|
+
pointer-events: none;
|
|
1780
|
+
background-image: linear-gradient(var(--border-subtle) 1px, transparent 1px), linear-gradient(90deg, var(--border-subtle) 1px, transparent 1px);
|
|
1781
|
+
background-size: var(--hero-grid-pitch) var(--hero-grid-pitch);
|
|
1782
|
+
mask-image: radial-gradient(ellipse at top, black, transparent 75%);
|
|
1783
|
+
}
|
|
1784
|
+
.tangle-display {
|
|
1785
|
+
margin: 0 auto;
|
|
1786
|
+
max-width: var(--display-max-width);
|
|
1787
|
+
overflow-wrap: anywhere;
|
|
1788
|
+
font-family: var(--font-display);
|
|
1789
|
+
font-size: var(--font-size-display);
|
|
1790
|
+
line-height: var(--line-height-display);
|
|
1791
|
+
letter-spacing: var(--tracking-display);
|
|
1792
|
+
font-weight: 700;
|
|
1793
|
+
color: hsl(var(--foreground));
|
|
1794
|
+
}
|
|
1795
|
+
.tangle-display[data-gradient] {
|
|
1796
|
+
background-image: var(--display-gradient);
|
|
1797
|
+
background-clip: text;
|
|
1798
|
+
-webkit-background-clip: text;
|
|
1799
|
+
color: transparent;
|
|
1800
|
+
}
|
|
1801
|
+
.tangle-intro-description {
|
|
1802
|
+
margin: var(--hero-content-gap) auto 0;
|
|
1803
|
+
max-width: var(--reading-max-width);
|
|
1804
|
+
color: hsl(var(--muted-foreground));
|
|
1805
|
+
font-size: clamp(1rem, 0.8rem + 1vw, 1.25rem);
|
|
1806
|
+
line-height: 1.625;
|
|
1807
|
+
}
|
|
1808
|
+
.tangle-intro-actions {
|
|
1809
|
+
display: flex;
|
|
1810
|
+
flex-wrap: wrap;
|
|
1811
|
+
justify-content: center;
|
|
1812
|
+
gap: var(--hero-action-gap);
|
|
1813
|
+
margin-top: 2.5rem;
|
|
1814
|
+
}
|
|
1815
|
+
.tangle-control-display {
|
|
1816
|
+
display: inline-flex;
|
|
1817
|
+
align-items: center;
|
|
1818
|
+
justify-content: center;
|
|
1819
|
+
gap: var(--hero-action-gap);
|
|
1820
|
+
min-height: var(--display-control-height);
|
|
1821
|
+
padding: 0 1.5rem;
|
|
1822
|
+
border: 1px solid transparent;
|
|
1823
|
+
border-radius: var(--display-control-radius);
|
|
1824
|
+
font: 600 var(--display-control-font-size)/1 var(--font-sans);
|
|
1825
|
+
text-decoration: none;
|
|
1826
|
+
white-space: nowrap;
|
|
1827
|
+
box-shadow: var(--display-control-shadow);
|
|
1828
|
+
cursor: pointer;
|
|
1829
|
+
transition: transform var(--motion-control);
|
|
1830
|
+
}
|
|
1831
|
+
.tangle-control-display:not([data-variant]), .tangle-control-display[data-variant="default"] { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
|
|
1832
|
+
.tangle-control-display[data-variant="outline"] {
|
|
1833
|
+
background: hsl(var(--card));
|
|
1834
|
+
color: hsl(var(--card-foreground));
|
|
1835
|
+
border-color: hsl(var(--border));
|
|
1836
|
+
box-shadow: none;
|
|
1837
|
+
}
|
|
1838
|
+
.tangle-control-display:focus-visible { outline: 2px solid hsl(var(--ring)); outline-offset: 3px; }
|
|
1839
|
+
.tangle-control-display:disabled, .tangle-control-display[aria-disabled="true"] { opacity: 0.5; cursor: not-allowed; }
|
|
1840
|
+
@media (hover: hover) and (pointer: fine) {
|
|
1841
|
+
.tangle-control-display:not(:disabled):not([aria-disabled="true"]):hover { transform: translateY(-1px); }
|
|
1842
|
+
}
|
|
1843
|
+
.tangle-control-display:not(:disabled):not([aria-disabled="true"]):active { transform: translateY(1px); }
|
|
1844
|
+
.tangle-intro-knot {
|
|
1845
|
+
position: absolute;
|
|
1846
|
+
z-index: -1;
|
|
1847
|
+
pointer-events: none;
|
|
1848
|
+
width: clamp(30rem, 45vw, 40rem);
|
|
1849
|
+
height: auto;
|
|
1850
|
+
right: -10rem;
|
|
1851
|
+
top: 1.5rem;
|
|
1852
|
+
opacity: var(--hero-knot-opacity);
|
|
1853
|
+
rotate: -14deg;
|
|
1854
|
+
}
|
|
1855
|
+
.tangle-intro-knot > svg { width: 100%; height: auto; }
|
|
1856
|
+
.tangle-intro[data-motion] { animation: tangle-intro-enter var(--motion-arrive) both; }
|
|
1857
|
+
@keyframes tangle-intro-enter { from { opacity: 0; transform: translateY(var(--arrive-distance)); } to { opacity: 1; transform: none; } }
|
|
1858
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1859
|
+
.tangle-intro, .tangle-intro *, .tangle-control-display { animation: none !important; transition: none !important; transform: none !important; }
|
|
1860
|
+
}
|
|
1861
|
+
@media (forced-colors: active) {
|
|
1862
|
+
.tangle-display[data-gradient] { background: none; color: CanvasText; }
|
|
1863
|
+
.tangle-intro::before, .tangle-intro::after { display: none; }
|
|
1864
|
+
}
|
|
1865
|
+
/* Nonvisual presence markers let Radix retain its lifecycle while the shared
|
|
1866
|
+
* surface adapter retargets geometry. Distinct names preserve interrupted exit. */
|
|
1867
|
+
@keyframes tangle-surface-present { from { --tangle-presence: 0; } to { --tangle-presence: 1; } }
|
|
1868
|
+
@keyframes tangle-surface-absent { from { --tangle-presence: 1; } to { --tangle-presence: 0; } }
|
|
1869
|
+
/* Requires Brand styles; the same contracts serve React and Hono. */
|
|
1870
|
+
.tangle-heading { color: hsl(var(--foreground)); font-family: var(--font-display); font-weight: 600; line-height: var(--line-height-heading); letter-spacing: var(--tracking-tight); }
|
|
1871
|
+
.tangle-heading[data-variant="display"] { font-size: var(--font-size-display); line-height: var(--line-height-display); }
|
|
1872
|
+
.tangle-heading[data-variant="hero"] { font-size: var(--font-size-hero); line-height: var(--line-height-display); }
|
|
1873
|
+
.tangle-heading[data-variant="page"] { font-size: var(--font-size-3xl); }
|
|
1874
|
+
.tangle-heading[data-variant="section"] { font-size: var(--font-size-xl); }
|
|
1875
|
+
.tangle-heading[data-variant="subsection"] { font-size: var(--font-size-lg); }
|
|
1876
|
+
.tangle-heading[data-variant="eyebrow"] { font-size: var(--font-size-sm); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: hsl(var(--muted-foreground)); }
|
|
1877
|
+
.tangle-page-header { min-width: 0; margin-bottom: 1.5rem; }
|
|
1878
|
+
.tangle-page-header-main { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1.5rem; }
|
|
1879
|
+
.tangle-intro .tangle-page-header-main { display: block; }
|
|
1880
|
+
.tangle-reading-shell { display: grid; grid-template-columns: minmax(0,1fr); gap: 2rem; padding: 2rem var(--hero-gutter); max-width: var(--content-max-width); margin: auto; min-width: 0; }
|
|
1881
|
+
.tangle-reading-shell > * { min-width: 0; }
|
|
1882
|
+
.tangle-reading-article { width: 100%; max-width: var(--reading-max-width); overflow-wrap: anywhere; }
|
|
1883
|
+
.tangle-reading-nav a, .tangle-reading-outline a { display: block; padding: 0.5rem 0; color: hsl(var(--muted-foreground)); text-decoration: none; }
|
|
1884
|
+
.tangle-reading-nav a[aria-current]:not([aria-current="false"]), .tangle-reading-outline a[aria-current]:not([aria-current="false"]) { color: var(--accent-text); font-weight: 600; }
|
|
1885
|
+
@media(min-width: 64rem) {
|
|
1886
|
+
.tangle-reading-shell { grid-template-columns: 13rem minmax(0,1fr); }
|
|
1887
|
+
.tangle-reading-outline { display: none; }
|
|
1888
|
+
.tangle-reading-nav { position: sticky; top: var(--shell-header-height); align-self: start; max-height: calc(100dvh - var(--shell-header-height)); overflow: auto; }
|
|
1889
|
+
}
|
|
1890
|
+
@media(min-width: 80rem) {
|
|
1891
|
+
.tangle-reading-shell:has(.tangle-reading-outline) { grid-template-columns: 13rem minmax(0,1fr) 11rem; }
|
|
1892
|
+
.tangle-reading-outline { display: block; position: sticky; top: var(--shell-header-height); align-self: start; }
|
|
1893
|
+
}
|
|
1894
|
+
/* Native dialog has the same solid reading surface as React's Dialog/Sheet. */
|
|
1895
|
+
.tangle-native-dialog { max-width: min(32rem,calc(100% - 2rem)); max-height: calc(100dvh - 2rem); overflow: auto; margin: auto; padding: 1.5rem; border: 1px solid hsl(var(--border)); border-radius: var(--radius-lg); background: hsl(var(--card)); color: hsl(var(--card-foreground)); }
|
|
1896
|
+
.tangle-native-dialog::backdrop { background: var(--scrim); }
|
|
1897
|
+
.tangle-api-meta { font-family: var(--font-mono); font-size: var(--font-size-sm); color: hsl(var(--muted-foreground)); overflow-wrap: anywhere; }
|
|
1898
|
+
.tangle-api-schema { margin: 1rem 0; }
|
|
1899
|
+
.tangle-api-schema > div { padding-block: 0.75rem; border-bottom: 1px solid hsl(var(--border)); overflow-wrap: anywhere; }
|
|
1900
|
+
.tangle-api-schema dt { font-family: var(--font-mono); font-size: var(--font-size-label); }
|
|
1901
|
+
.tangle-api-schema dt span, .tangle-api-schema dd { color: hsl(var(--muted-foreground)); }
|
|
1902
|
+
.tangle-api-schema dd { margin: 0.25rem 0 0; font-size: var(--font-size-label); }
|
|
1903
|
+
.tangle-page-description { margin-top: 0.25rem; max-width: 65ch; color: hsl(var(--muted-foreground)); font-size: var(--font-size-label); overflow-wrap: anywhere; }
|
|
1904
|
+
.tangle-code-tabs { overflow-x: auto; max-width: 100%; }
|
|
1905
|
+
.tangle-code-tabs [role="tab"] { flex: none; min-height: var(--control-height-lg); }
|
|
1748
1906
|
@layer theme{/* GENERATED from @tangle-network/brand/styles/legacy-light.css
|
|
1749
1907
|
* SHA-256: 33e13702150c34d3a1350846ce3dae2c6c7ef17e1632fbae5d3479a1b43f55f3
|
|
1750
1908
|
* Run node src/theme/build.mjs --write; do not edit colors or ratios here. */
|
package/dist/tools/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
restrictTaxonomy,
|
|
10
10
|
verifyCapabilityToken,
|
|
11
11
|
verifyExpiringCapabilityToken
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-75ZIWV4U.js";
|
|
13
13
|
import {
|
|
14
14
|
DEFAULT_APP_TOOL_PATHS,
|
|
15
15
|
DEFAULT_HEADER_NAMES,
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
unresolvableSurfaceCredential
|
|
24
24
|
} from "../chunk-6A7MYOUI.js";
|
|
25
25
|
import "../chunk-S5SRJJQG.js";
|
|
26
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-YXLN4PXK.js";
|
|
27
27
|
import {
|
|
28
28
|
APP_TOOL_NAMES,
|
|
29
29
|
buildAppToolOpenAITools,
|
|
@@ -31,11 +31,11 @@ import {
|
|
|
31
31
|
defineAppTool,
|
|
32
32
|
findCustomTool,
|
|
33
33
|
isAppToolName
|
|
34
|
-
} from "../chunk-
|
|
34
|
+
} from "../chunk-AJZ3EJB5.js";
|
|
35
35
|
import "../chunk-UGWQLQDS.js";
|
|
36
36
|
import {
|
|
37
37
|
ToolInputError
|
|
38
|
-
} from "../chunk-
|
|
38
|
+
} from "../chunk-7BYY7QKC.js";
|
|
39
39
|
export {
|
|
40
40
|
APP_TOOL_NAMES,
|
|
41
41
|
DEFAULT_APP_TOOL_PATHS,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
-
export declare function ActionDialogButton({ children, onClick, disabled, variant
|
|
2
|
+
export declare function ActionDialogButton({ children, onClick, disabled, variant }: {
|
|
3
3
|
children: ReactNode;
|
|
4
4
|
onClick: () => void;
|
|
5
5
|
disabled?: boolean;
|
|
6
6
|
variant?: 'primary' | 'ghost' | 'destructive';
|
|
7
7
|
}): import("react").JSX.Element;
|
|
8
|
-
export declare function ActionDialog({ title, children, footer, onClose, busy, error
|
|
8
|
+
export declare function ActionDialog({ title, children, footer, onClose, busy, error }: {
|
|
9
9
|
title: string;
|
|
10
10
|
children: ReactNode;
|
|
11
11
|
footer: ReactNode;
|
|
@@ -57,7 +57,7 @@ export interface SectionProps {
|
|
|
57
57
|
collapsible?: boolean;
|
|
58
58
|
children: ReactNode;
|
|
59
59
|
}
|
|
60
|
-
/**
|
|
60
|
+
/** Profile copy and spacing compose the shared card and disclosure. */
|
|
61
61
|
export declare function Section({ title, description, summary, defaultOpen, collapsible, children }: SectionProps): import("react").JSX.Element;
|
|
62
62
|
export type StatusTone = 'neutral' | 'pending' | 'success' | 'warning' | 'error';
|
|
63
63
|
/** An inline status with an icon: a check in progress, a passed check, or a failure. */
|
|
@@ -71,6 +71,8 @@ export * from './record-grid';
|
|
|
71
71
|
export * from './command-palette';
|
|
72
72
|
export * from './sparkline';
|
|
73
73
|
export * from './insight-card';
|
|
74
|
+
export { ReviewInbox, type ReviewInboxItem, type ReviewInboxFeedback, type ReviewInboxProps } from './review-inbox';
|
|
75
|
+
export { ReviewFeedbackForm, type ReviewFeedbackFormProps, type ReviewFeedbackFormHandle, type ReviewFeedbackDraft, type ReviewVerdict } from '../hub-approvals-react/feedback';
|
|
74
76
|
export * from './use-dictation';
|
|
75
77
|
export { usePopover, usePending, PopoverSurface, POPOVER_SURFACE_ATTR, ModelPicker, formatModelPrice, EffortPicker, EffortMeter, effortMeterFill, effortLevelLabel, effortLevelsFromIds, reconcileEffortLevels, DEFAULT_EFFORT_LEVELS, EFFORT_METER_SEGMENTS, OVERLAY_SHADOW, fieldPickerTriggerClass, type ModelPickerProps, type EffortPickerProps, type EffortLevel, type PickerVariant, type PopoverSurfaceProps, } from './controls';
|
|
76
78
|
export { AgentSessionControls, HarnessPicker, type AgentSessionControlsProps, type HarnessPickerProps, } from './agent-session-controls';
|
package/dist/web-react/index.js
CHANGED
|
@@ -39,6 +39,7 @@ import {
|
|
|
39
39
|
QuestionOptionList,
|
|
40
40
|
ReasoningRow,
|
|
41
41
|
RecordGrid,
|
|
42
|
+
ReviewInbox,
|
|
42
43
|
RunDrillIn,
|
|
43
44
|
SeatPaywall,
|
|
44
45
|
Sparkline,
|
|
@@ -142,14 +143,14 @@ import {
|
|
|
142
143
|
withoutRecordGridCreated,
|
|
143
144
|
withoutRecordGridRemoved,
|
|
144
145
|
withoutRecordGridUpdate
|
|
145
|
-
} from "../chunk-
|
|
146
|
+
} from "../chunk-6ZUVYAKB.js";
|
|
146
147
|
import {
|
|
147
148
|
SessionHistoryPanel,
|
|
148
149
|
formatSessionTimestamp,
|
|
149
150
|
useInfiniteScroll,
|
|
150
151
|
useSessionActions,
|
|
151
152
|
useSessionHistory
|
|
152
|
-
} from "../chunk-
|
|
153
|
+
} from "../chunk-EQRVOMMS.js";
|
|
153
154
|
import {
|
|
154
155
|
MENTION_PILL_CLASS
|
|
155
156
|
} from "../chunk-3HUFJ5LO.js";
|
|
@@ -158,7 +159,7 @@ import {
|
|
|
158
159
|
WorkspaceInitial,
|
|
159
160
|
WorkspaceSwitcher
|
|
160
161
|
} from "../chunk-UDLA3NGY.js";
|
|
161
|
-
import "../chunk-
|
|
162
|
+
import "../chunk-A2GG4D4A.js";
|
|
162
163
|
import {
|
|
163
164
|
tabTerminalConnectionId,
|
|
164
165
|
useSandboxTerminalConnection
|
|
@@ -167,7 +168,7 @@ import {
|
|
|
167
168
|
AGENT_PROFILE_EDITOR_SECTIONS,
|
|
168
169
|
AgentProfileEditor,
|
|
169
170
|
AgentProfileRegistryError
|
|
170
|
-
} from "../chunk-
|
|
171
|
+
} from "../chunk-3RHAF2P5.js";
|
|
171
172
|
import {
|
|
172
173
|
EvidenceLineageTable,
|
|
173
174
|
ExceptionList,
|
|
@@ -231,7 +232,11 @@ import {
|
|
|
231
232
|
import {
|
|
232
233
|
ProviderLogo
|
|
233
234
|
} from "../chunk-RASGKEAL.js";
|
|
234
|
-
import "../chunk-
|
|
235
|
+
import "../chunk-LN5RBVGP.js";
|
|
236
|
+
import {
|
|
237
|
+
ReviewFeedbackForm
|
|
238
|
+
} from "../chunk-ATQQCG4I.js";
|
|
239
|
+
import "../chunk-WSEXFTN4.js";
|
|
235
240
|
import "../chunk-FQYAJYPW.js";
|
|
236
241
|
import {
|
|
237
242
|
ATTACHMENT_ACCEPT
|
|
@@ -375,6 +380,8 @@ export {
|
|
|
375
380
|
QuestionOptionList,
|
|
376
381
|
ReasoningRow,
|
|
377
382
|
RecordGrid,
|
|
383
|
+
ReviewFeedbackForm,
|
|
384
|
+
ReviewInbox,
|
|
378
385
|
ReviewQueuePanel,
|
|
379
386
|
RouteChunkBoundary,
|
|
380
387
|
RunDrillIn,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { HubActionPreview, HubApprovalFeedback } from '../hub-approvals';
|
|
3
|
+
import { type ReviewVerdict } from '../hub-approvals-react/feedback';
|
|
4
|
+
export interface ReviewInboxItem {
|
|
5
|
+
id: string;
|
|
6
|
+
revision: string | number;
|
|
7
|
+
title: string;
|
|
8
|
+
kind: string;
|
|
9
|
+
createdAt: number;
|
|
10
|
+
canReview: boolean;
|
|
11
|
+
input: unknown;
|
|
12
|
+
feedback?: HubApprovalFeedback;
|
|
13
|
+
preview?: HubActionPreview;
|
|
14
|
+
approveLabel?: string;
|
|
15
|
+
allowedVerdicts?: readonly ReviewVerdict[];
|
|
16
|
+
}
|
|
17
|
+
export interface ReviewInboxFeedback extends HubApprovalFeedback {
|
|
18
|
+
verdict: ReviewVerdict;
|
|
19
|
+
}
|
|
20
|
+
export interface ReviewInboxProps {
|
|
21
|
+
items: readonly ReviewInboxItem[];
|
|
22
|
+
/** An existing deep-linked item; selected once when the round begins, without reordering it. */
|
|
23
|
+
initialSelectedId?: string;
|
|
24
|
+
renderItem: (item: ReviewInboxItem) => ReactNode;
|
|
25
|
+
/** Resolves only after the verdict and its learning signal have been stored. */
|
|
26
|
+
onVerdict: (item: ReviewInboxItem, decision: ReviewInboxFeedback) => Promise<void>;
|
|
27
|
+
onFeedback?: (item: ReviewInboxItem, feedback: Omit<ReviewInboxFeedback, 'verdict'>) => Promise<void>;
|
|
28
|
+
loading?: boolean;
|
|
29
|
+
error?: string | null;
|
|
30
|
+
onRefresh?: () => void | Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
/** One oldest-first review round. Domain rendering, storage and authority stay with the host. */
|
|
33
|
+
export declare function ReviewInbox({ items, initialSelectedId, renderItem, onVerdict, onFeedback, loading, error, onRefresh }: ReviewInboxProps): import("react").JSX.Element;
|
|
@@ -16,11 +16,11 @@ import {
|
|
|
16
16
|
} from "../chunk-3NVVBQ2U.js";
|
|
17
17
|
import {
|
|
18
18
|
defineAppTool
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-AJZ3EJB5.js";
|
|
20
20
|
import "../chunk-UGWQLQDS.js";
|
|
21
21
|
import {
|
|
22
22
|
ToolInputError
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-7BYY7QKC.js";
|
|
24
24
|
import {
|
|
25
25
|
isWorkProductStatus,
|
|
26
26
|
parseAgentCheckInput,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/agent-app",
|
|
3
|
-
"version": "0.60.
|
|
3
|
+
"version": "0.60.180",
|
|
4
4
|
"packageManager": "pnpm@11.24.0",
|
|
5
5
|
"description": "Build agent applications with typed chat, tools, sandboxes, integrations, billing, and evaluation.",
|
|
6
6
|
"keywords": [
|
|
@@ -701,7 +701,7 @@
|
|
|
701
701
|
"@tangle-network/hub-sdk": "0.30.2",
|
|
702
702
|
"@tangle-network/sandbox": "0.60.49",
|
|
703
703
|
"@tangle-network/sandbox-ui": "0.134.7",
|
|
704
|
-
"@tangle-network/ui": "11.
|
|
704
|
+
"@tangle-network/ui": "11.38.1",
|
|
705
705
|
"@testing-library/dom": "^10.4.1",
|
|
706
706
|
"@testing-library/react": "^16.3.3",
|
|
707
707
|
"@testing-library/user-event": "^14.6.6",
|