@tangle-network/agent-app 0.45.48 → 0.45.50
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/{DesignCanvas-QY2CA5GI.js → DesignCanvas-JRBCAWHW.js} +2 -2
- package/dist/{DesignCanvasEditor-CJ7PLX7A.js → DesignCanvasEditor-J2OLS22G.js} +4 -4
- package/dist/{IntakeInterview-NJXKH35Q.js → IntakeInterview-OKT6DCBN.js} +2 -2
- package/dist/{InvitationsPanel-F2VY4TSL.js → InvitationsPanel-OFCYVSAE.js} +2 -2
- package/dist/InviteAcceptPage-BDOO4JSE.js +7 -0
- package/dist/{MembersPanel-N5CBOUXC.js → MembersPanel-3ZK2GCMC.js} +2 -2
- package/dist/{TimelineEditor-IYNKBSUX.js → TimelineEditor-52YEPDX5.js} +2 -2
- package/dist/VaultPane-IGJKB6CX.js +7 -0
- package/dist/assistant/index.d.ts +18 -2
- package/dist/assistant/index.js +45 -14
- package/dist/assistant/index.js.map +1 -1
- package/dist/{billing-BibxgALe.d.ts → billing-BuNlaKlE.d.ts} +15 -23
- package/dist/chat-react/index.js +1 -1
- package/dist/{chunk-DS2WE62K.js → chunk-33BN7P57.js} +5 -5
- package/dist/chunk-33BN7P57.js.map +1 -0
- package/dist/{chunk-5BACNOVR.js → chunk-5MI2SKQH.js} +2 -2
- package/dist/chunk-5MI2SKQH.js.map +1 -0
- package/dist/{chunk-C7AQW6US.js → chunk-7HY4LX7O.js} +820 -208
- package/dist/chunk-7HY4LX7O.js.map +1 -0
- package/dist/{chunk-T7XPIBCX.js → chunk-7LJYCHXK.js} +16 -16
- package/dist/chunk-7LJYCHXK.js.map +1 -0
- package/dist/{chunk-XVRHISF3.js → chunk-CJHIAZKK.js} +5 -5
- package/dist/chunk-CJHIAZKK.js.map +1 -0
- package/dist/{chunk-J6OJTFNE.js → chunk-ENLRJYVW.js} +13 -13
- package/dist/chunk-ENLRJYVW.js.map +1 -0
- package/dist/{chunk-R6KGLGEJ.js → chunk-GRDLGQ6A.js} +2 -2
- package/dist/{chunk-R6KGLGEJ.js.map → chunk-GRDLGQ6A.js.map} +1 -1
- package/dist/{chunk-XPFNEKHS.js → chunk-I2CA5N7V.js} +2 -2
- package/dist/chunk-I2CA5N7V.js.map +1 -0
- package/dist/{chunk-IN6LNZ7O.js → chunk-Q2QKEV6J.js} +7 -7
- package/dist/{chunk-IN6LNZ7O.js.map → chunk-Q2QKEV6J.js.map} +1 -1
- package/dist/{chunk-RILGAFEL.js → chunk-UMV45ZDF.js} +3 -3
- package/dist/{chunk-JJJEO4ND.js → chunk-VWTODXRW.js} +2 -2
- package/dist/{chunk-JJJEO4ND.js.map → chunk-VWTODXRW.js.map} +1 -1
- package/dist/{chunk-DB2D2JBQ.js → chunk-W7P5KV6O.js} +2 -2
- package/dist/{chunk-DB2D2JBQ.js.map → chunk-W7P5KV6O.js.map} +1 -1
- package/dist/{chunk-GT4GTRGQ.js → chunk-ZGY6QB4F.js} +5 -5
- package/dist/{chunk-GT4GTRGQ.js.map → chunk-ZGY6QB4F.js.map} +1 -1
- package/dist/design-canvas-react/index.js +7 -7
- package/dist/design-canvas-react/index.js.map +1 -1
- package/dist/design-canvas-react/lazy.js +1 -1
- package/dist/intakes-react/index.js +1 -1
- package/dist/intakes-react/lazy.js +1 -1
- package/dist/platform/index.d.ts +1 -1
- package/dist/platform/index.js +16 -16
- package/dist/platform/index.js.map +1 -1
- package/dist/sequences-react/index.js +2 -2
- package/dist/studio-react/index.js +23 -23
- package/dist/studio-react/index.js.map +1 -1
- package/dist/teams-react/index.js +3 -3
- package/dist/teams-react/lazy.js +3 -3
- package/dist/theme/index.js +1 -1
- package/dist/theme/tokens.css +15 -13
- package/dist/vault/index.js +1 -1
- package/dist/vault/lazy.js +1 -1
- package/dist/web-react/index.d.ts +359 -5
- package/dist/web-react/index.js +44 -3
- package/dist/work-product-react/index.js +7 -7
- package/dist/work-product-react/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/InviteAcceptPage-UT4452KT.js +0 -7
- package/dist/VaultPane-MUWGYVJ7.js +0 -7
- package/dist/chunk-5BACNOVR.js.map +0 -1
- package/dist/chunk-C7AQW6US.js.map +0 -1
- package/dist/chunk-DS2WE62K.js.map +0 -1
- package/dist/chunk-J6OJTFNE.js.map +0 -1
- package/dist/chunk-T7XPIBCX.js.map +0 -1
- package/dist/chunk-XPFNEKHS.js.map +0 -1
- package/dist/chunk-XVRHISF3.js.map +0 -1
- /package/dist/{DesignCanvas-QY2CA5GI.js.map → DesignCanvas-JRBCAWHW.js.map} +0 -0
- /package/dist/{DesignCanvasEditor-CJ7PLX7A.js.map → DesignCanvasEditor-J2OLS22G.js.map} +0 -0
- /package/dist/{IntakeInterview-NJXKH35Q.js.map → IntakeInterview-OKT6DCBN.js.map} +0 -0
- /package/dist/{InvitationsPanel-F2VY4TSL.js.map → InvitationsPanel-OFCYVSAE.js.map} +0 -0
- /package/dist/{InviteAcceptPage-UT4452KT.js.map → InviteAcceptPage-BDOO4JSE.js.map} +0 -0
- /package/dist/{MembersPanel-N5CBOUXC.js.map → MembersPanel-3ZK2GCMC.js.map} +0 -0
- /package/dist/{TimelineEditor-IYNKBSUX.js.map → TimelineEditor-52YEPDX5.js.map} +0 -0
- /package/dist/{VaultPane-MUWGYVJ7.js.map → VaultPane-IGJKB6CX.js.map} +0 -0
- /package/dist/{chunk-RILGAFEL.js.map → chunk-UMV45ZDF.js.map} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DesignCanvas
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7LJYCHXK.js";
|
|
4
4
|
import "./chunk-X5DQ5QOP.js";
|
|
5
5
|
import "./chunk-DRB77FYL.js";
|
|
6
6
|
import "./chunk-F7VH4G5C.js";
|
|
7
7
|
export {
|
|
8
8
|
DesignCanvas
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=DesignCanvas-
|
|
10
|
+
//# sourceMappingURL=DesignCanvas-JRBCAWHW.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DesignCanvasEditor
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-33BN7P57.js";
|
|
4
|
+
import "./chunk-7LJYCHXK.js";
|
|
5
|
+
import "./chunk-Q2QKEV6J.js";
|
|
6
6
|
import "./chunk-OYTMILRK.js";
|
|
7
7
|
import "./chunk-X5DQ5QOP.js";
|
|
8
8
|
import "./chunk-DRB77FYL.js";
|
|
@@ -10,4 +10,4 @@ import "./chunk-F7VH4G5C.js";
|
|
|
10
10
|
export {
|
|
11
11
|
DesignCanvasEditor
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=DesignCanvasEditor-
|
|
13
|
+
//# sourceMappingURL=DesignCanvasEditor-J2OLS22G.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
IntakeInterview
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-I2CA5N7V.js";
|
|
4
4
|
import "./chunk-JDEGS53O.js";
|
|
5
5
|
export {
|
|
6
6
|
IntakeInterview
|
|
7
7
|
};
|
|
8
|
-
//# sourceMappingURL=IntakeInterview-
|
|
8
|
+
//# sourceMappingURL=IntakeInterview-OKT6DCBN.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
InvitationsPanel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5MI2SKQH.js";
|
|
4
4
|
import "./chunk-AULM4X7U.js";
|
|
5
5
|
import "./chunk-6XIAPIW6.js";
|
|
6
6
|
export {
|
|
7
7
|
InvitationsPanel
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=InvitationsPanel-
|
|
9
|
+
//# sourceMappingURL=InvitationsPanel-OFCYVSAE.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MembersPanel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GRDLGQ6A.js";
|
|
4
4
|
import "./chunk-AULM4X7U.js";
|
|
5
5
|
import "./chunk-6XIAPIW6.js";
|
|
6
6
|
export {
|
|
7
7
|
MembersPanel
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=MembersPanel-
|
|
9
|
+
//# sourceMappingURL=MembersPanel-3ZK2GCMC.js.map
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
SEQUENCE_MEDIA_DRAG_TYPE,
|
|
3
3
|
TimelineEditor,
|
|
4
4
|
TimelineEditor_default
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZGY6QB4F.js";
|
|
6
6
|
import "./chunk-BVKQKGRK.js";
|
|
7
7
|
export {
|
|
8
8
|
SEQUENCE_MEDIA_DRAG_TYPE,
|
|
9
9
|
TimelineEditor,
|
|
10
10
|
TimelineEditor_default as default
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=TimelineEditor-
|
|
12
|
+
//# sourceMappingURL=TimelineEditor-52YEPDX5.js.map
|
|
@@ -15,7 +15,7 @@ import '../agent-activity-C8ZG0F0M.js';
|
|
|
15
15
|
import '../flow-types-CJxEmaRy.js';
|
|
16
16
|
import '../queue-VTBA5ONX.js';
|
|
17
17
|
import '../web-react/terminal.js';
|
|
18
|
-
import '../billing-
|
|
18
|
+
import '../billing-BuNlaKlE.js';
|
|
19
19
|
import '../billing/index.js';
|
|
20
20
|
import '../session-shell/index.js';
|
|
21
21
|
import '../web-react/async/index.js';
|
|
@@ -85,6 +85,11 @@ interface ToolResultEventData {
|
|
|
85
85
|
* integrations page; "github_app" is the GitHub App installed on the repo (the
|
|
86
86
|
* event source for a GitHub trigger), connected via the App install flow. */
|
|
87
87
|
type ConnectionRequirementKind = "integration" | "github_app";
|
|
88
|
+
/** Names one requirement in the same list, by its (provider, kind) identity. */
|
|
89
|
+
interface ConnectionRequirementRef {
|
|
90
|
+
provider: string;
|
|
91
|
+
kind: ConnectionRequirementKind;
|
|
92
|
+
}
|
|
88
93
|
/** A connection a proposed workflow references, and whether the user has it
|
|
89
94
|
* connected right now. Surfaced on an authoring proposal so the card can show
|
|
90
95
|
* what must be connected — and WHERE — before the workflow can be created. */
|
|
@@ -99,6 +104,17 @@ interface ConnectionRequirement {
|
|
|
99
104
|
* there's no link to offer (e.g. a github_app requirement on a deploy with no
|
|
100
105
|
* app slug); the card then shows the requirement without a connect link. */
|
|
101
106
|
connectUrl?: string | null;
|
|
107
|
+
/**
|
|
108
|
+
* Another requirement in the SAME list that must be satisfied before this one
|
|
109
|
+
* can be, supplied by the server. A GitHub App installation is claimed
|
|
110
|
+
* through the user's own GitHub OAuth token, so the install is refused while
|
|
111
|
+
* that connection is missing — the card withholds a connect that could only
|
|
112
|
+
* end that way, and names the step that comes first instead.
|
|
113
|
+
*
|
|
114
|
+
* The server lists a prerequisite BEFORE the requirement naming it. Absent on
|
|
115
|
+
* proposals predating the field, and on a requirement nothing blocks.
|
|
116
|
+
*/
|
|
117
|
+
prerequisite?: ConnectionRequirementRef | null;
|
|
102
118
|
}
|
|
103
119
|
/**
|
|
104
120
|
* Outcome of a host-driven, in-place connect for a single proposal requirement
|
|
@@ -830,4 +846,4 @@ declare function AssistantLauncherProvider({ children, }: {
|
|
|
830
846
|
}): react.JSX.Element;
|
|
831
847
|
declare function useAssistantLauncher(): AssistantLauncher;
|
|
832
848
|
|
|
833
|
-
export { type AssistantChat, type AssistantClient, type AssistantClientConfig, AssistantClientInputError, AssistantClientProvider, type AssistantDeliveryMode, AssistantDock, type AssistantDockProps, type AssistantLauncher, AssistantLauncherProvider, type AssistantModelOption, type AssistantModels, type AssistantModelsResult, AssistantPanel, type AssistantPanelProps, type AssistantSendOptions, type AssistantStreamEvent, type AssistantThreadSummary, type AssistantThreads, AssistantTranscript, type AssistantTranscriptProps, type AssistantTranscriptView, type ChatMessage, type ChatRequest, type ChatRole, type ConfirmResult, type ConfirmedResult, type ConnectRequirementResult, type ConnectionRequirement, type ConnectionRequirementKind, type DeltaEventData, type DoneEventData, type ErrorEventData, type PendingProposal, ProposalCard, type ProposalCardProps, type ReasoningEventData, type ThreadEventData, type ThreadHistoryResult, type ToolActivityStatus, type ToolCallEventData, type ToolOutcome, type ToolProposalEventData, type ToolResultEventData, type UsageEventData, type UsageInfo, type UseAssistantChatOptions, adaptTranscript, assistantIsThinking, createAssistantClient, useAssistantChat, useAssistantClient, useAssistantLauncher, useAssistantModels, useAssistantThreads };
|
|
849
|
+
export { type AssistantChat, type AssistantClient, type AssistantClientConfig, AssistantClientInputError, AssistantClientProvider, type AssistantDeliveryMode, AssistantDock, type AssistantDockProps, type AssistantLauncher, AssistantLauncherProvider, type AssistantModelOption, type AssistantModels, type AssistantModelsResult, AssistantPanel, type AssistantPanelProps, type AssistantSendOptions, type AssistantStreamEvent, type AssistantThreadSummary, type AssistantThreads, AssistantTranscript, type AssistantTranscriptProps, type AssistantTranscriptView, type ChatMessage, type ChatRequest, type ChatRole, type ConfirmResult, type ConfirmedResult, type ConnectRequirementResult, type ConnectionRequirement, type ConnectionRequirementKind, type ConnectionRequirementRef, type DeltaEventData, type DoneEventData, type ErrorEventData, type PendingProposal, ProposalCard, type ProposalCardProps, type ReasoningEventData, type ThreadEventData, type ThreadHistoryResult, type ToolActivityStatus, type ToolCallEventData, type ToolOutcome, type ToolProposalEventData, type ToolResultEventData, type UsageEventData, type UsageInfo, type UseAssistantChatOptions, adaptTranscript, assistantIsThinking, createAssistantClient, useAssistantChat, useAssistantClient, useAssistantLauncher, useAssistantModels, useAssistantThreads };
|
package/dist/assistant/index.js
CHANGED
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
ChatComposer,
|
|
3
3
|
ChatEmptyState,
|
|
4
4
|
ChatMessages
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-7HY4LX7O.js";
|
|
6
6
|
import "../chunk-FBVLEGEG.js";
|
|
7
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-ENLRJYVW.js";
|
|
8
8
|
import "../chunk-GEYACSFW.js";
|
|
9
9
|
import {
|
|
10
10
|
ModelPicker
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-CJHIAZKK.js";
|
|
12
12
|
import "../chunk-MLG6XKPV.js";
|
|
13
13
|
import "../chunk-BATKJP3P.js";
|
|
14
14
|
import {
|
|
@@ -148,13 +148,22 @@ function parseRequirement(raw) {
|
|
|
148
148
|
if (typeof r.connected !== "boolean") return null;
|
|
149
149
|
const kind = r.kind === "integration" || r.kind === "github_app" ? r.kind : void 0;
|
|
150
150
|
const connectUrl = typeof r.connectUrl === "string" || r.connectUrl === null ? r.connectUrl : void 0;
|
|
151
|
+
const prerequisite = parsePrerequisite(r.prerequisite);
|
|
151
152
|
return {
|
|
152
153
|
provider: r.provider,
|
|
153
154
|
connected: r.connected,
|
|
154
155
|
...kind ? { kind } : {},
|
|
155
|
-
...connectUrl !== void 0 ? { connectUrl } : {}
|
|
156
|
+
...connectUrl !== void 0 ? { connectUrl } : {},
|
|
157
|
+
...prerequisite ? { prerequisite } : {}
|
|
156
158
|
};
|
|
157
159
|
}
|
|
160
|
+
function parsePrerequisite(v) {
|
|
161
|
+
if (!v || typeof v !== "object") return void 0;
|
|
162
|
+
const ref = v;
|
|
163
|
+
if (typeof ref.provider !== "string" || ref.provider === "") return void 0;
|
|
164
|
+
if (ref.kind !== "integration" && ref.kind !== "github_app") return void 0;
|
|
165
|
+
return { provider: ref.provider, kind: ref.kind };
|
|
166
|
+
}
|
|
158
167
|
function parseRequirements(v) {
|
|
159
168
|
if (!Array.isArray(v)) return void 0;
|
|
160
169
|
const out = [];
|
|
@@ -1810,7 +1819,7 @@ function AssistantHistory({
|
|
|
1810
1819
|
{
|
|
1811
1820
|
type: "button",
|
|
1812
1821
|
onClick: retry,
|
|
1813
|
-
className: "rounded border border-destructive/40 bg-card px-2 py-0.5 font-medium text-
|
|
1822
|
+
className: "rounded border border-destructive/40 bg-card px-2 py-0.5 font-medium text-xs text-destructive transition hover:bg-destructive/10",
|
|
1814
1823
|
children: "Retry"
|
|
1815
1824
|
}
|
|
1816
1825
|
)
|
|
@@ -1845,7 +1854,7 @@ function AssistantHistory({
|
|
|
1845
1854
|
children: title
|
|
1846
1855
|
}
|
|
1847
1856
|
),
|
|
1848
|
-
ms != null && /* @__PURE__ */ jsx2("span", { className: "text-
|
|
1857
|
+
ms != null && /* @__PURE__ */ jsx2("span", { className: "text-xs text-muted-foreground", children: timeAgo(ms) })
|
|
1849
1858
|
]
|
|
1850
1859
|
}
|
|
1851
1860
|
),
|
|
@@ -1892,7 +1901,7 @@ function providerLabel(provider) {
|
|
|
1892
1901
|
|
|
1893
1902
|
// src/assistant/ProposalCard.tsx
|
|
1894
1903
|
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
1895
|
-
var EYEBROW_CLASS = "text-
|
|
1904
|
+
var EYEBROW_CLASS = "text-xs font-semibold uppercase tracking-[0.05em] text-muted-foreground";
|
|
1896
1905
|
function ProposalCard({
|
|
1897
1906
|
proposal,
|
|
1898
1907
|
confirming,
|
|
@@ -1907,6 +1916,7 @@ function ProposalCard({
|
|
|
1907
1916
|
const [tab, setTab] = useState4("graph");
|
|
1908
1917
|
const isWorkflow = view.preview?.kind === "workflow";
|
|
1909
1918
|
const showGraph = isWorkflow && !!renderGraph;
|
|
1919
|
+
const requirements = proposal.requirements ?? [];
|
|
1910
1920
|
return /* @__PURE__ */ jsxs2("div", { className: "rounded-lg border border-primary/40 bg-card p-3 text-sm", children: [
|
|
1911
1921
|
/* @__PURE__ */ jsx3("p", { className: "font-semibold text-[15px] text-foreground", children: view.title }),
|
|
1912
1922
|
view.fields.length > 0 && /* @__PURE__ */ jsx3("dl", { className: "mt-2 space-y-1", children: view.fields.map((f) => /* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-[auto_1fr] gap-x-3 text-xs", children: [
|
|
@@ -1956,17 +1966,18 @@ function ProposalCard({
|
|
|
1956
1966
|
/* @__PURE__ */ jsx3("pre", { className: "mt-1 max-h-[202px] overflow-auto rounded border border-border bg-secondary p-2 font-mono text-xs tabular-nums", children: /* @__PURE__ */ jsx3("code", { children: view.preview.content }) })
|
|
1957
1967
|
)
|
|
1958
1968
|
] }),
|
|
1959
|
-
|
|
1969
|
+
requirements.length > 0 && /* @__PURE__ */ jsxs2("div", { className: "mt-3 rounded border border-border p-2", children: [
|
|
1960
1970
|
/* @__PURE__ */ jsx3("p", { className: EYEBROW_CLASS, children: "Integrations" }),
|
|
1961
|
-
/* @__PURE__ */ jsx3("ul", { className: "mt-1 space-y-1", children:
|
|
1971
|
+
/* @__PURE__ */ jsx3("ul", { className: "mt-1 space-y-1", children: requirements.map((r) => /* @__PURE__ */ jsx3(
|
|
1962
1972
|
RequirementRow,
|
|
1963
1973
|
{
|
|
1964
1974
|
req: r,
|
|
1975
|
+
blockedBy: blockingPrerequisite(r, requirements),
|
|
1965
1976
|
navigate,
|
|
1966
1977
|
onConnect,
|
|
1967
1978
|
renderProviderIcon
|
|
1968
1979
|
},
|
|
1969
|
-
`${r.provider}-${r
|
|
1980
|
+
`${r.provider}-${requirementKind(r)}`
|
|
1970
1981
|
)) }),
|
|
1971
1982
|
/* @__PURE__ */ jsx3("p", { className: "mt-1 text-muted-foreground text-xs", children: "Connect the items above, then confirm." })
|
|
1972
1983
|
] }),
|
|
@@ -2012,8 +2023,24 @@ function openConnect(target, navigate) {
|
|
|
2012
2023
|
window.location.assign(url.href);
|
|
2013
2024
|
}
|
|
2014
2025
|
}
|
|
2026
|
+
function requirementKind(req) {
|
|
2027
|
+
return req.kind ?? "integration";
|
|
2028
|
+
}
|
|
2029
|
+
function blockingPrerequisite(req, all) {
|
|
2030
|
+
const ref = req.prerequisite;
|
|
2031
|
+
if (!ref) return void 0;
|
|
2032
|
+
const match = all.find(
|
|
2033
|
+
(r) => r.provider === ref.provider && requirementKind(r) === ref.kind
|
|
2034
|
+
);
|
|
2035
|
+
return match && !match.connected ? match : void 0;
|
|
2036
|
+
}
|
|
2037
|
+
function blockedNote(prerequisite) {
|
|
2038
|
+
const label = providerLabel(prerequisite.provider);
|
|
2039
|
+
return requirementKind(prerequisite) === "github_app" ? `Install ${label} App first` : `Connect ${label} first`;
|
|
2040
|
+
}
|
|
2015
2041
|
function RequirementRow({
|
|
2016
2042
|
req,
|
|
2043
|
+
blockedBy,
|
|
2017
2044
|
navigate,
|
|
2018
2045
|
onConnect,
|
|
2019
2046
|
renderProviderIcon
|
|
@@ -2027,10 +2054,10 @@ function RequirementRow({
|
|
|
2027
2054
|
};
|
|
2028
2055
|
}, []);
|
|
2029
2056
|
const label = providerLabel(req.provider);
|
|
2030
|
-
const isApp = req
|
|
2057
|
+
const isApp = requirementKind(req) === "github_app";
|
|
2031
2058
|
const kindLabel = isApp ? `${label} App` : label;
|
|
2032
2059
|
const statusText = req.connected ? isApp ? "installed" : "connected" : isApp ? "not installed" : "not connected";
|
|
2033
|
-
const canConnect = !req.connected && (Boolean(onConnect) || req.connectUrl !== null);
|
|
2060
|
+
const canConnect = !req.connected && !blockedBy && (Boolean(onConnect) || req.connectUrl !== null);
|
|
2034
2061
|
const target = req.connectUrl ?? "/app/integrations";
|
|
2035
2062
|
const handleConnect = () => {
|
|
2036
2063
|
if (!onConnect) {
|
|
@@ -2084,6 +2111,10 @@ function RequirementRow({
|
|
|
2084
2111
|
)
|
|
2085
2112
|
] })
|
|
2086
2113
|
] }),
|
|
2114
|
+
blockedBy && !req.connected && // Named rather than silent: a row with no affordance and no reason reads
|
|
2115
|
+
// as broken. The step it waits on is the row above (the server lists a
|
|
2116
|
+
// prerequisite first), so this points at something already on screen.
|
|
2117
|
+
/* @__PURE__ */ jsx3("span", { className: "shrink-0 text-muted-foreground text-xs", children: blockedNote(blockedBy) }),
|
|
2087
2118
|
canConnect && /* @__PURE__ */ jsx3(
|
|
2088
2119
|
"button",
|
|
2089
2120
|
{
|
|
@@ -2265,7 +2296,7 @@ function AssistantTranscript({
|
|
|
2265
2296
|
},
|
|
2266
2297
|
proposal.callId
|
|
2267
2298
|
)) }) : null;
|
|
2268
|
-
const cost = message.id === metricsHostId && !view.isStreaming && view.usage?.costUsd != null && !view.usage.replayed ? /* @__PURE__ */ jsxs3("p", { className: "mt-1 text-
|
|
2299
|
+
const cost = message.id === metricsHostId && !view.isStreaming && view.usage?.costUsd != null && !view.usage.replayed ? /* @__PURE__ */ jsxs3("p", { className: "mt-1 text-xs text-muted-foreground", children: [
|
|
2269
2300
|
formatTurnCost(view.usage.costUsd),
|
|
2270
2301
|
" this turn"
|
|
2271
2302
|
] }) : null;
|
|
@@ -2801,7 +2832,7 @@ function AssistantPanel({
|
|
|
2801
2832
|
{
|
|
2802
2833
|
type: "button",
|
|
2803
2834
|
onClick: () => navigate?.(errorView.cta?.to ?? ""),
|
|
2804
|
-
className: "mt-1.5 rounded border border-destructive/40 bg-card px-2 py-0.5 font-medium text-
|
|
2835
|
+
className: "mt-1.5 rounded border border-destructive/40 bg-card px-2 py-0.5 font-medium text-xs text-destructive transition hover:bg-destructive/10",
|
|
2805
2836
|
children: errorView.cta.label
|
|
2806
2837
|
}
|
|
2807
2838
|
)
|