reflex-agent 0.10.1 → 0.13.3
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/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +146 -120
- package/.next/app-path-routes-manifest.json +10 -9
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/routes-manifest.json +8 -0
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/agents/[agentId]/page.js +2 -2
- package/.next/server/app/agents/[agentId]/page.js.nft.json +1 -1
- package/.next/server/app/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/[agentId]/respond/route.js +1 -1
- package/.next/server/app/api/agents/[agentId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/[agentId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/images/[rootId]/[file]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/attachments/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route.js.nft.json +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/dashboard/route.js +1 -1
- package/.next/server/app/api/roots/[id]/dashboard/route.js.nft.json +1 -1
- package/.next/server/app/api/roots/[id]/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/suggestions/route.js +1 -1
- package/.next/server/app/api/roots/[id]/suggestions/route.js.nft.json +1 -1
- package/.next/server/app/api/roots/[id]/suggestions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/bundle.js/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host/route.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host/route.js.nft.json +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host-api.mjs/route.js +28 -10
- package/.next/server/app/api/utilities/[scope]/[id]/host-api.mjs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host-ui.mjs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/iframe/route.js +4 -4
- package/.next/server/app/api/utilities/[scope]/[id]/iframe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/style.css/route_client-reference-manifest.js +1 -1
- package/.next/server/app/audit/page.js +2 -2
- package/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding/page.js +3 -3
- package/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/chat/[topicId]/page.js +2 -2
- package/.next/server/app/roots/[id]/chat/[topicId]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/chat/[topicId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/kb/[...slug]/page.js +2 -2
- package/.next/server/app/roots/[id]/kb/[...slug]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/kb/[...slug]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/memory/page.js +2 -0
- package/.next/server/app/roots/[id]/memory/page.js.nft.json +1 -0
- package/.next/server/app/roots/[id]/memory/page_client-reference-manifest.js +1 -0
- package/.next/server/app/roots/[id]/page.js +6 -6
- package/.next/server/app/roots/[id]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/workflows/[wfId]/page.js +2 -2
- package/.next/server/app/roots/[id]/workflows/[wfId]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/workflows/[wfId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/workflows/page.js +2 -2
- package/.next/server/app/roots/[id]/workflows/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/workflows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/new/page.js +3 -3
- package/.next/server/app/roots/new/page.js.nft.json +1 -1
- package/.next/server/app/roots/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +4 -4
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/share/[id]/file/page.js +2 -2
- package/.next/server/app/share/[id]/file/page.js.nft.json +1 -1
- package/.next/server/app/share/[id]/file/page_client-reference-manifest.js +1 -1
- package/.next/server/app/share/[id]/page.js +2 -2
- package/.next/server/app/share/[id]/page.js.nft.json +1 -1
- package/.next/server/app/share/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/utilities/[scope]/[id]/page.js +2 -2
- package/.next/server/app/utilities/[scope]/[id]/page.js.nft.json +1 -1
- package/.next/server/app/utilities/[scope]/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/utilities/page.js +2 -2
- package/.next/server/app/utilities/page.js.nft.json +1 -1
- package/.next/server/app/utilities/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +10 -9
- package/.next/server/chunks/1105.js +1 -1
- package/.next/server/chunks/1116.js +1 -0
- package/.next/server/chunks/1244.js +1 -1
- package/.next/server/chunks/1358.js +1 -1
- package/.next/server/chunks/1854.js +1 -0
- package/.next/server/chunks/1960.js +1 -1
- package/.next/server/chunks/2485.js +51 -2
- package/.next/server/chunks/2552.js +1 -1
- package/.next/server/chunks/{3829.js → 2553.js} +2 -2
- package/.next/server/chunks/269.js +1 -0
- package/.next/server/chunks/285.js +66 -16
- package/.next/server/chunks/3240.js +1 -1
- package/.next/server/chunks/3332.js +1 -1
- package/.next/server/chunks/4031.js +46 -2
- package/.next/server/chunks/{5470.js → 4460.js} +3 -3
- package/.next/server/chunks/4812.js +2 -2
- package/.next/server/chunks/4925.js +1 -1
- package/.next/server/chunks/569.js +1 -1
- package/.next/server/chunks/5798.js +3 -0
- package/.next/server/chunks/6057.js +1 -0
- package/.next/server/chunks/6261.js +1 -0
- package/.next/server/chunks/7188.js +1 -1
- package/.next/server/chunks/7220.js +1 -1
- package/.next/server/chunks/7358.js +13 -12
- package/.next/server/chunks/7800.js +1 -1
- package/.next/server/chunks/9098.js +1 -1
- package/.next/server/chunks/9579.js +1 -1
- package/.next/server/chunks/9809.js +1 -1
- package/.next/server/functions-config-manifest.json +3 -3
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1053-ea6a705a291aa42a.js +1 -0
- package/.next/static/chunks/2145-c6ca18def78454d6.js +1 -0
- package/.next/static/chunks/2283-846ac14d7ab55b2a.js +1 -0
- package/.next/static/chunks/3798-d4d575ac69051cf9.js +1 -0
- package/.next/static/chunks/4108.2dc3c767f831f9af.js +1 -0
- package/.next/static/chunks/4243-193beeabc76bcd91.js +1 -0
- package/.next/static/chunks/4678-15402b9832b27389.js +1 -0
- package/.next/static/chunks/6785-9a72b10489bc9c60.js +1 -0
- package/.next/static/chunks/951-5ff2aaad965fedb7.js +1 -0
- package/.next/static/chunks/app/agents/[agentId]/{page-5d6f4cb16b42d02b.js → page-2ee5d78dc94253c5.js} +1 -1
- package/.next/static/chunks/app/audit/{page-8dcb779a1ca1f1d1.js → page-9bac9e3674f0fae9.js} +1 -1
- package/.next/static/chunks/app/layout-b89925fa75d66eea.js +1 -0
- package/.next/static/chunks/app/onboarding/page-9b9f74b3737805f6.js +1 -0
- package/.next/static/chunks/app/page-d46c2ac151511ae7.js +1 -0
- package/.next/static/chunks/app/roots/[id]/chat/[topicId]/{page-ca235f5f1d523635.js → page-8dc9ea79064a1e6e.js} +1 -1
- package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-0345054358c099c2.js +1 -0
- package/.next/static/chunks/app/roots/[id]/memory/page-ca21167541d9d818.js +1 -0
- package/.next/static/chunks/app/roots/[id]/page-1c6b4677b911c463.js +1 -0
- package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-688ef6bc97b92a38.js +1 -0
- package/.next/static/chunks/app/roots/[id]/workflows/{page-85f4eb885ecb80a1.js → page-4f1658f13b1ed62f.js} +1 -1
- package/.next/static/chunks/app/roots/new/page-3c0a418feff0bf27.js +1 -0
- package/.next/static/chunks/app/settings/page-bfc3e0b4fca2b6cd.js +1 -0
- package/.next/static/chunks/app/share/[id]/page-3c41145c5052196e.js +1 -0
- package/.next/static/chunks/app/utilities/[scope]/[id]/page-561dd294cb2beb54.js +1 -0
- package/.next/static/chunks/app/utilities/page-5061f113002b5638.js +1 -0
- package/.next/static/chunks/{webpack-680c8fa1cf6aef64.js → webpack-e4214c40f8bbfb8a.js} +1 -1
- package/.next/static/css/6144318015aa8092.css +1 -0
- package/.next/trace +90 -89
- package/.next/types/app/roots/[id]/memory/page.ts +84 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/README.md +147 -32
- package/dist/lib/reflex/agents/prompts.js +25 -0
- package/dist/lib/reflex/agents/prompts.js.map +1 -1
- package/dist/lib/reflex/prompts/defaults.js +2 -1
- package/dist/lib/reflex/prompts/defaults.js.map +1 -1
- package/lib/server/utilities/worker-bootstrap.js +28 -19
- package/package.json +1 -1
- package/.next/server/chunks/2108.js +0 -1
- package/.next/server/chunks/243.js +0 -1
- package/.next/server/chunks/827.js +0 -1
- package/.next/server/chunks/8501.js +0 -1
- package/.next/server/chunks/9448.js +0 -3
- package/.next/static/chunks/1215-6bf6c0997a3966b5.js +0 -1
- package/.next/static/chunks/1217-407174d9b164a499.js +0 -1
- package/.next/static/chunks/4108.e60f6f2d13c6e341.js +0 -1
- package/.next/static/chunks/5041-50b52df22f60e028.js +0 -1
- package/.next/static/chunks/5475-fd7801895adb058e.js +0 -1
- package/.next/static/chunks/7529-5e60df9bb54dac00.js +0 -1
- package/.next/static/chunks/7544-361ab91088caf4e2.js +0 -1
- package/.next/static/chunks/83-c3e4801d1362769d.js +0 -1
- package/.next/static/chunks/app/layout-d10a100470029f0e.js +0 -1
- package/.next/static/chunks/app/onboarding/page-a52d76f48c071f59.js +0 -1
- package/.next/static/chunks/app/page-8551ff0fd6989e65.js +0 -1
- package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-aebc35e79e6e16d6.js +0 -1
- package/.next/static/chunks/app/roots/[id]/page-9b4a28b335dd8190.js +0 -1
- package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-ab2801337dc9cc52.js +0 -1
- package/.next/static/chunks/app/roots/new/page-4036140c7828948d.js +0 -1
- package/.next/static/chunks/app/settings/page-175f2087baeb2328.js +0 -1
- package/.next/static/chunks/app/share/[id]/page-5f86538339553350.js +0 -1
- package/.next/static/chunks/app/utilities/[scope]/[id]/page-223495e5566167ef.js +0 -1
- package/.next/static/chunks/app/utilities/page-cbd341f4f56941a0.js +0 -1
- package/.next/static/css/2bc00775af31f40f.css +0 -1
- /package/.next/static/{fQIjUyzIepDxqQpzYlf6H → BGlfzUnm4RdoF1cif83QI}/_buildManifest.js +0 -0
- /package/.next/static/{fQIjUyzIepDxqQpzYlf6H → BGlfzUnm4RdoF1cif83QI}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// File: /home/runner/work/reflex-agent/reflex-agent/app/roots/[id]/memory/page.tsx
|
|
2
|
+
import * as entry from '../../../../../../app/roots/[id]/memory/page.js'
|
|
3
|
+
import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
|
|
4
|
+
|
|
5
|
+
type TEntry = typeof import('../../../../../../app/roots/[id]/memory/page.js')
|
|
6
|
+
|
|
7
|
+
type SegmentParams<T extends Object = any> = T extends Record<string, any>
|
|
8
|
+
? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
|
|
9
|
+
: T
|
|
10
|
+
|
|
11
|
+
// Check that the entry is a valid entry
|
|
12
|
+
checkFields<Diff<{
|
|
13
|
+
default: Function
|
|
14
|
+
config?: {}
|
|
15
|
+
generateStaticParams?: Function
|
|
16
|
+
revalidate?: RevalidateRange<TEntry> | false
|
|
17
|
+
dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
|
|
18
|
+
dynamicParams?: boolean
|
|
19
|
+
fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
|
|
20
|
+
preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
|
|
21
|
+
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
|
|
22
|
+
maxDuration?: number
|
|
23
|
+
|
|
24
|
+
metadata?: any
|
|
25
|
+
generateMetadata?: Function
|
|
26
|
+
viewport?: any
|
|
27
|
+
generateViewport?: Function
|
|
28
|
+
experimental_ppr?: boolean
|
|
29
|
+
|
|
30
|
+
}, TEntry, ''>>()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
// Check the prop type of the entry function
|
|
34
|
+
checkFields<Diff<PageProps, FirstArg<TEntry['default']>, 'default'>>()
|
|
35
|
+
|
|
36
|
+
// Check the arguments and return type of the generateMetadata function
|
|
37
|
+
if ('generateMetadata' in entry) {
|
|
38
|
+
checkFields<Diff<PageProps, FirstArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
|
39
|
+
checkFields<Diff<ResolvingMetadata, SecondArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Check the arguments and return type of the generateViewport function
|
|
43
|
+
if ('generateViewport' in entry) {
|
|
44
|
+
checkFields<Diff<PageProps, FirstArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
|
45
|
+
checkFields<Diff<ResolvingViewport, SecondArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Check the arguments and return type of the generateStaticParams function
|
|
49
|
+
if ('generateStaticParams' in entry) {
|
|
50
|
+
checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
|
|
51
|
+
checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface PageProps {
|
|
55
|
+
params?: Promise<SegmentParams>
|
|
56
|
+
searchParams?: Promise<any>
|
|
57
|
+
}
|
|
58
|
+
export interface LayoutProps {
|
|
59
|
+
children?: React.ReactNode
|
|
60
|
+
|
|
61
|
+
params?: Promise<SegmentParams>
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// =============
|
|
65
|
+
// Utility types
|
|
66
|
+
type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
|
|
67
|
+
|
|
68
|
+
// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
|
|
69
|
+
type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
|
|
70
|
+
type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
|
|
71
|
+
|
|
72
|
+
type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
|
|
73
|
+
type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
|
|
74
|
+
type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
function checkFields<_ extends { [k in keyof any]: never }>() {}
|
|
79
|
+
|
|
80
|
+
// https://github.com/sindresorhus/type-fest
|
|
81
|
+
type Numeric = number | bigint
|
|
82
|
+
type Zero = 0 | 0n
|
|
83
|
+
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
|
|
84
|
+
type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
|
package/.next/types/routes.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// This file is generated automatically by Next.js
|
|
2
2
|
// Do not edit this file manually
|
|
3
3
|
|
|
4
|
-
type AppRoutes = "/" | "/agents/[agentId]" | "/audit" | "/onboarding" | "/roots/[id]" | "/roots/[id]/chat/[topicId]" | "/roots/[id]/kb/[...slug]" | "/roots/[id]/workflows" | "/roots/[id]/workflows/[wfId]" | "/roots/new" | "/settings" | "/share/[id]" | "/share/[id]/file" | "/utilities" | "/utilities/[scope]/[id]"
|
|
4
|
+
type AppRoutes = "/" | "/agents/[agentId]" | "/audit" | "/onboarding" | "/roots/[id]" | "/roots/[id]/chat/[topicId]" | "/roots/[id]/kb/[...slug]" | "/roots/[id]/memory" | "/roots/[id]/workflows" | "/roots/[id]/workflows/[wfId]" | "/roots/new" | "/settings" | "/share/[id]" | "/share/[id]/file" | "/utilities" | "/utilities/[scope]/[id]"
|
|
5
5
|
type AppRouteHandlerRoutes = "/api/agents/[agentId]/respond" | "/api/images/[rootId]/[file]" | "/api/oauth/callback" | "/api/oauth/start" | "/api/roots/[id]/attachments" | "/api/roots/[id]/chat/[topicId]/send" | "/api/roots/[id]/chat/[topicId]/stop" | "/api/roots/[id]/chat/[topicId]/stream" | "/api/roots/[id]/dashboard" | "/api/roots/[id]/suggestions" | "/api/utilities/[scope]/[id]/bundle.js" | "/api/utilities/[scope]/[id]/host" | "/api/utilities/[scope]/[id]/host-api.mjs" | "/api/utilities/[scope]/[id]/host-ui.mjs" | "/api/utilities/[scope]/[id]/iframe" | "/api/utilities/[scope]/[id]/style.css"
|
|
6
6
|
type PageRoutes = never
|
|
7
7
|
type LayoutRoutes = "/" | "/roots/[id]"
|
|
@@ -34,6 +34,7 @@ interface ParamMap {
|
|
|
34
34
|
"/roots/[id]": { "id": string; }
|
|
35
35
|
"/roots/[id]/chat/[topicId]": { "id": string; "topicId": string; }
|
|
36
36
|
"/roots/[id]/kb/[...slug]": { "id": string; "slug": string[]; }
|
|
37
|
+
"/roots/[id]/memory": { "id": string; }
|
|
37
38
|
"/roots/[id]/workflows": { "id": string; }
|
|
38
39
|
"/roots/[id]/workflows/[wfId]": { "id": string; "wfId": string; }
|
|
39
40
|
"/roots/new": {}
|
package/.next/types/validator.ts
CHANGED
|
@@ -101,6 +101,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
101
101
|
type __Unused = __Check
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
// Validate ../../app/roots/[id]/memory/page.tsx
|
|
105
|
+
{
|
|
106
|
+
type __IsExpected<Specific extends AppPageConfig<"/roots/[id]/memory">> = Specific
|
|
107
|
+
const handler = {} as typeof import("../../app/roots/[id]/memory/page.js")
|
|
108
|
+
type __Check = __IsExpected<typeof handler>
|
|
109
|
+
// @ts-ignore
|
|
110
|
+
type __Unused = __Check
|
|
111
|
+
}
|
|
112
|
+
|
|
104
113
|
// Validate ../../app/roots/[id]/page.tsx
|
|
105
114
|
{
|
|
106
115
|
type __IsExpected<Specific extends AppPageConfig<"/roots/[id]">> = Specific
|
package/README.md
CHANGED
|
@@ -1,36 +1,156 @@
|
|
|
1
1
|
# Reflex
|
|
2
2
|
|
|
3
|
-
Local-first knowledge base. You point Reflex at a
|
|
3
|
+
Local-first AI knowledge base + agent platform. You point Reflex at a
|
|
4
|
+
directory ("a Space"), and an agent (Claude Code or Codex) becomes
|
|
5
|
+
your second brain for that directory: it keeps a knowledge tree, runs
|
|
6
|
+
scheduled workflows, recalls past conversations, and dispatches
|
|
7
|
+
sub-tasks in isolated git worktrees.
|
|
8
|
+
|
|
9
|
+
Everything is stored as plain markdown + JSON in your filesystem. No
|
|
10
|
+
external database, no cloud, no daemon. The only persistent process is
|
|
11
|
+
the Next.js server itself.
|
|
4
12
|
|
|
5
13
|
## Install
|
|
6
14
|
|
|
7
15
|
Prerequisites:
|
|
8
16
|
|
|
9
|
-
- **Node.js
|
|
10
|
-
|
|
17
|
+
- **Node.js 22+** ([nodejs.org](https://nodejs.org/) or `nvm`/`fnm`).
|
|
18
|
+
Node 24 recommended (built-in SQLite powers session search).
|
|
19
|
+
- A coding-agent CLI authenticated:
|
|
20
|
+
- `npm i -g @openai/codex && codex login`, or
|
|
21
|
+
- `npm i -g @anthropic-ai/claude-code && claude login`
|
|
11
22
|
|
|
12
23
|
Install Reflex globally:
|
|
13
24
|
|
|
14
25
|
```sh
|
|
15
26
|
npm i -g reflex-agent
|
|
16
27
|
# or: pnpm add -g reflex-agent
|
|
17
|
-
# or: yarn global add reflex-agent
|
|
18
28
|
```
|
|
19
29
|
|
|
20
|
-
|
|
30
|
+
Launch the web UI:
|
|
21
31
|
|
|
22
32
|
```sh
|
|
23
|
-
reflex start
|
|
33
|
+
reflex start # opens http://localhost:3210 in your browser
|
|
24
34
|
reflex start --port 4000 --no-open
|
|
25
35
|
```
|
|
26
36
|
|
|
27
37
|
Dev runs on `:3211` by default so a `pnpm dev` and an installed
|
|
28
38
|
`reflex start` can co-exist without a port collision.
|
|
29
39
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
## First run
|
|
41
|
+
|
|
42
|
+
1. Click **Add a root** on the home screen and pick a directory.
|
|
43
|
+
2. On the Space dashboard, the onboarding wizard asks a few short
|
|
44
|
+
questions to seed memory + suggest a first workflow.
|
|
45
|
+
3. Open a chat — type in plain language. The agent reads / writes the
|
|
46
|
+
`.reflex/` tree, your memory files, and (with permission) shell +
|
|
47
|
+
web tools.
|
|
48
|
+
|
|
49
|
+
## What Reflex actually does
|
|
50
|
+
|
|
51
|
+
### A knowledge base per Space
|
|
52
|
+
|
|
53
|
+
The agent builds a tree of markdown notes under `<your-dir>/.reflex/`:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
<your-dir>/
|
|
57
|
+
├── .reflexignore — gitignore-syntax — same rules
|
|
58
|
+
└── .reflex/
|
|
59
|
+
├── INDEX.md — top-level summary
|
|
60
|
+
├── kb/ — categorised entries (note, article, diagram, …)
|
|
61
|
+
├── memory/ — eight files describing the user / project
|
|
62
|
+
├── topics/ — chat transcripts
|
|
63
|
+
├── journal/ — daily entries
|
|
64
|
+
├── workflows/ — saved recipes
|
|
65
|
+
├── utilities/ — locally-installed extensions
|
|
66
|
+
└── worktrees/ — task-bound git worktrees
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
See [docs/kb.md](docs/kb.md) and [docs/architecture.md](docs/architecture.md).
|
|
70
|
+
|
|
71
|
+
### Cross-session memory
|
|
72
|
+
|
|
73
|
+
Eight bounded markdown files capture who the user is and what the
|
|
74
|
+
project is about. Every chat starts with this loaded into the system
|
|
75
|
+
prompt — the agent never re-asks who you are.
|
|
76
|
+
|
|
77
|
+
A weekly system task rolls up journal entries into a `RECENT.md`
|
|
78
|
+
summary. A hygiene scanner refuses memory writes that look like
|
|
79
|
+
prompt injection, credentials, or invisible unicode.
|
|
80
|
+
|
|
81
|
+
See [docs/memory.md](docs/memory.md).
|
|
82
|
+
|
|
83
|
+
### Searchable conversation history
|
|
84
|
+
|
|
85
|
+
Every journal entry + chat transcript across every Space is indexed
|
|
86
|
+
into a SQLite FTS5 database under `$REFLEX_HOME/sessions.db`. The
|
|
87
|
+
agent (or you, or a utility) can ask "what did we say about X?" with
|
|
88
|
+
ranked snippets returning in milliseconds.
|
|
89
|
+
|
|
90
|
+
See [docs/sessions.md](docs/sessions.md).
|
|
91
|
+
|
|
92
|
+
### Linear workflows, scheduled
|
|
93
|
+
|
|
94
|
+
The user (or the agent) composes "recipes" from typed steps —
|
|
95
|
+
`web-fetch`, `ask-agent`, `kb-write`, `image-generate`, etc. The
|
|
96
|
+
background scheduler fires triggered ones hourly / daily / weekly.
|
|
97
|
+
|
|
98
|
+
See [docs/workflows.md](docs/workflows.md).
|
|
99
|
+
|
|
100
|
+
### Installable utilities
|
|
101
|
+
|
|
102
|
+
Mini-apps that bring a UI iframe, server actions, slash commands,
|
|
103
|
+
skills, system-prompt addenda, and workflows. Shipped curated or
|
|
104
|
+
installed from GitHub. Two examples ship by default:
|
|
105
|
+
|
|
106
|
+
- **`learn-anything`** — chat-driven topic learning, materialised into
|
|
107
|
+
the KB.
|
|
108
|
+
- **`task-board`** — Kanban board with agent-dispatch, git worktrees,
|
|
109
|
+
pre/post hooks, auto-pickup.
|
|
110
|
+
|
|
111
|
+
See [docs/utilities.md](docs/utilities.md).
|
|
112
|
+
|
|
113
|
+
### Agent dispatch via worktrees
|
|
114
|
+
|
|
115
|
+
Code tasks dispatched from the task-board get an isolated git worktree
|
|
116
|
+
on `task/<slug>`, so two parallel agents can work on the same repo
|
|
117
|
+
without stepping on each other. PR mode auto-detects `gh` CLI and
|
|
118
|
+
turns "Merge" into "Open PR".
|
|
119
|
+
|
|
120
|
+
See [docs/tasks.md](docs/tasks.md).
|
|
121
|
+
|
|
122
|
+
## Architecture at a glance
|
|
123
|
+
|
|
124
|
+
One Node process. Inside it:
|
|
125
|
+
|
|
126
|
+
- Next.js App Router HTTP server (UI + server actions).
|
|
127
|
+
- A background workflow scheduler (in-process singleton).
|
|
128
|
+
- A worker pool for utility server actions.
|
|
129
|
+
- Subprocess agents (Claude Code / Codex) spawned per topic.
|
|
130
|
+
- MCP servers on demand.
|
|
131
|
+
|
|
132
|
+
Two filesystem homes: `REFLEX_HOME` (global state) and
|
|
133
|
+
`<root>/.reflex/` (per-Space).
|
|
134
|
+
|
|
135
|
+
For the full layer diagram and component map see
|
|
136
|
+
[docs/architecture.md](docs/architecture.md).
|
|
137
|
+
|
|
138
|
+
## Documentation
|
|
139
|
+
|
|
140
|
+
| Doc | Topic |
|
|
141
|
+
|---|---|
|
|
142
|
+
| [docs/architecture.md](docs/architecture.md) | System map, process model, two-homes layout |
|
|
143
|
+
| [docs/memory.md](docs/memory.md) | 8-file taxonomy, caps, hygiene, weekly rollup |
|
|
144
|
+
| [docs/sessions.md](docs/sessions.md) | FTS5 recall over journal + topics |
|
|
145
|
+
| [docs/topics.md](docs/topics.md) | Chat transcripts, event log, `/goal` mode |
|
|
146
|
+
| [docs/kb.md](docs/kb.md) | Knowledge-base entries, kinds, slug rules |
|
|
147
|
+
| [docs/workflows.md](docs/workflows.md) | Step kinds, templates, scheduler, system tasks |
|
|
148
|
+
| [docs/utilities.md](docs/utilities.md) | Extension model, manifest, permissions, iframe + worker |
|
|
149
|
+
| [docs/host-api.md](docs/host-api.md) | Full `reflex.*` method reference |
|
|
150
|
+
| [docs/markers.md](docs/markers.md) | `<<reflex:*>>` protocol reference |
|
|
151
|
+
| [docs/skills.md](docs/skills.md) | Skill files, scopes, marker authoring |
|
|
152
|
+
| [docs/tasks.md](docs/tasks.md) | task-board utility, worktree mechanics, PR mode |
|
|
153
|
+
| [docs/agents.md](docs/agents.md) | Claude Code / Codex App Server integration, permissioning |
|
|
34
154
|
|
|
35
155
|
## CLI
|
|
36
156
|
|
|
@@ -41,38 +161,28 @@ reflex watch <dir> # watch dir and refresh KB on changes
|
|
|
41
161
|
reflex chat <dir> # open a chat scoped to dir's KB
|
|
42
162
|
```
|
|
43
163
|
|
|
44
|
-
## Develop from source
|
|
45
|
-
|
|
46
|
-
```sh
|
|
47
|
-
pnpm install
|
|
48
|
-
pnpm dev # http://localhost:3211 (Next dev server with HMR)
|
|
49
|
-
pnpm build # produce dist/ + .next/ for `reflex start`
|
|
50
|
-
```
|
|
51
|
-
|
|
52
164
|
## Data directory
|
|
53
165
|
|
|
54
166
|
Reflex stores its global state (registered roots, settings, MCP config,
|
|
55
|
-
|
|
167
|
+
secrets, skills, sessions index, …) in one directory:
|
|
56
168
|
|
|
57
169
|
- **Dev (`pnpm dev`)** → `~/.reflex`
|
|
58
170
|
- **Prod (`reflex start` via npm-installed CLI)** → `~/.reflex-agent`
|
|
59
171
|
|
|
60
|
-
Override either by setting `REFLEX_HOME=/your/path` before launching.
|
|
61
|
-
two defaults keep prod and dev experiments isolated.
|
|
172
|
+
Override either by setting `REFLEX_HOME=/your/path` before launching.
|
|
62
173
|
|
|
63
|
-
##
|
|
174
|
+
## Develop from source
|
|
64
175
|
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
├── INDEX.md # description of the whole dir
|
|
71
|
-
└── <subdir>/
|
|
72
|
-
├── INDEX.md # description of this subdir
|
|
73
|
-
└── *.md # topic-structured notes
|
|
176
|
+
```sh
|
|
177
|
+
pnpm install
|
|
178
|
+
pnpm dev # http://localhost:3211 (Next dev server with HMR)
|
|
179
|
+
pnpm build # produce dist/ + .next/ for `reflex start`
|
|
180
|
+
pnpm typecheck
|
|
74
181
|
```
|
|
75
182
|
|
|
183
|
+
PRs welcome. The codebase favours small, focused modules — when in
|
|
184
|
+
doubt, look at neighbouring files and match the style.
|
|
185
|
+
|
|
76
186
|
## Config (`.reflex/config.json`)
|
|
77
187
|
|
|
78
188
|
```json
|
|
@@ -83,4 +193,9 @@ two defaults keep prod and dev experiments isolated.
|
|
|
83
193
|
}
|
|
84
194
|
```
|
|
85
195
|
|
|
86
|
-
`watchDebounceMs` defaults to 30 minutes (`1800000`).
|
|
196
|
+
`watchDebounceMs` defaults to 30 minutes (`1800000`). Lower it for
|
|
197
|
+
tighter loops; the enforced minimum is 1 second (anti-thrash).
|
|
198
|
+
|
|
199
|
+
## License
|
|
200
|
+
|
|
201
|
+
MIT.
|
|
@@ -41,8 +41,33 @@ export async function chatSystemPrompt(scope) {
|
|
|
41
41
|
memoryInstructions(),
|
|
42
42
|
skillAuthoringInstructions(),
|
|
43
43
|
taskAuthoringInstructions(),
|
|
44
|
+
appBuildRoutingInstructions(),
|
|
44
45
|
].join("\n\n");
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Disambiguation guard for "build me an app / tool / bot / integration"
|
|
49
|
+
* requests. Reflex's flagship output is a *utility* (a mini-app that
|
|
50
|
+
* runs INSIDE Reflex — iframe + Host API, TypeScript, no separate
|
|
51
|
+
* hosting), not a standalone service. The orchestrator otherwise treats
|
|
52
|
+
* such a request as a greenfield project and asks about language /
|
|
53
|
+
* deploy, which is wrong when the user means a utility. This is a
|
|
54
|
+
* runtime block (not the editable chat.md) so the routing stays correct
|
|
55
|
+
* regardless of local prompt edits.
|
|
56
|
+
*/
|
|
57
|
+
function appBuildRoutingInstructions() {
|
|
58
|
+
return [
|
|
59
|
+
"## Building an app / tool / integration — utility first",
|
|
60
|
+
"",
|
|
61
|
+
"When the user asks to build, make, or release an app, tool, bot, integration, dashboard, form, or service, FIRST decide what KIND of thing it is — before asking about language, framework, or hosting:",
|
|
62
|
+
"",
|
|
63
|
+
"- **Reflex utility** (the default for anything that extends Reflex or lives in this ecosystem) — a mini-app that runs INSIDE Reflex: a React/TypeScript `ui.tsx` in an iframe, talking to the world only through the Host API (`reflex.*`) with manifest permissions. There is NO separate backend to host and NO deploy step — installing the utility IS the deploy. Utilities are ALWAYS TypeScript, so never ask \"which language?\".",
|
|
64
|
+
"- **Standalone project** — a normal codebase the user will run/host themselves (a server, a CLI, a website). Only here do language/framework/deploy questions make sense.",
|
|
65
|
+
"",
|
|
66
|
+
"Routing signals that mean **utility**: the project name starts with `rflx-`/`reflex-`, it lives under a `reflex-*` parent, the user says \"utility\"/\"mini-app\"/\"плагин\"/\"виджет\", or the thing is meant to surface inside Reflex (a panel, a card, a GitHub/Calendar/etc. integration the user will open in the Mini-apps screen).",
|
|
67
|
+
"",
|
|
68
|
+
"If those signals are present, proceed as a utility — gather the missing essentials (what it does, which data/permissions, any secrets) and emit `<<reflex:utility>>`. Do NOT ask about stack or deployment. If it's genuinely unclear which kind it is, ask THAT question first via `<<reflex:question>>` (\"Reflex utility that runs inside Reflex, or a standalone app you'll host yourself?\") — don't jump to language selection.",
|
|
69
|
+
].join("\n");
|
|
70
|
+
}
|
|
46
71
|
/**
|
|
47
72
|
* Inline image generation via `<<reflex:image-gen>>`. Reflex calls
|
|
48
73
|
* Gemini Nano Banana (or Codex `$imagegen`) post-turn, saves the bytes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../lib/reflex/agents/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAmB;IACrD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;IAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,QAAQ,GACZ,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa;QAChC,CAAC,CAAC,UAAU,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,0BAA0B;QACxE,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,cAAc,CAAC,QAAQ,EAAE;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,gBAAgB;QAC5C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ;QACR,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChD,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;QAC7B,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAgB;IACrD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE;QACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,gBAAgB;QAC5C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,CAAC;IACH,qEAAqE;IACrE,0EAA0E;IAC1E,wEAAwE;IACxE,OAAO;QACL,QAAQ;QACR,oBAAoB,EAAE;QACtB,kBAAkB,EAAE;QACpB,oBAAoB,EAAE;QACtB,oBAAoB,EAAE;QACtB,kBAAkB,EAAE;QACpB,0BAA0B,EAAE;QAC5B,yBAAyB,EAAE;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../lib/reflex/agents/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -220,7 +220,7 @@ To create a utility, emit a marker:
|
|
|
220
220
|
- \`"@host/api"\` — gives the \`{ reflex }\` object (see below).
|
|
221
221
|
- \`"@host/ui"\` — gives primitives: Button, Input, Textarea, Label, Card, CardContent, CardHeader, CardTitle, Badge, ScrollArea.
|
|
222
222
|
- No other packages / node_modules / node:* modules. esbuild rejects any other import.
|
|
223
|
-
3. **No fetch/XHR/WebSocket/localStorage** inside the utility. Only \`reflex.web.fetch({url})\` with an explicitly whitelisted domain in the manifest.
|
|
223
|
+
3. **No fetch/XHR/WebSocket/localStorage** inside the utility. Only \`reflex.web.fetch({url})\` with an explicitly whitelisted domain in the manifest. To DISPLAY external images via \`<img src>\`, list their hosts in \`permissions.images.domains\` — the CSP blocks any host not on that list.
|
|
224
224
|
4. **State** is persisted via \`reflex.fs.write({path, content})\` (in \`<utility>/data/\`) or \`reflex.kb.add({...})\`.
|
|
225
225
|
5. **Manifest** must list every required permission — the user sees this list at install time and can refuse.
|
|
226
226
|
|
|
@@ -238,6 +238,7 @@ To create a utility, emit a marker:
|
|
|
238
238
|
"kb": {"read": true, "write": true, "kinds": ["3d-model"]},
|
|
239
239
|
"fs": {"sandbox": true},
|
|
240
240
|
"web": {"fetch": {"domains": ["api.example.com"]}, "search": false},
|
|
241
|
+
"images": {"domains": ["cdn.example.com"]},
|
|
241
242
|
"audit": {"write": true},
|
|
242
243
|
"workers": {"enabled": true}
|
|
243
244
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../../lib/reflex/prompts/defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAG3D,MAAM,CAAC,MAAM,eAAe,GAAiC;IAC3D,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,eAAe;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,OAAO,EAAE;QACP,UAAU;QACV,MAAM;QACN,OAAO;QACP,UAAU;QACV,aAAa;QACb,OAAO;QACP,WAAW;QACX,UAAU;KACX;IACD,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;CACnD,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAiC;IAC7D,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DV;IAEC,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../../lib/reflex/prompts/defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAG3D,MAAM,CAAC,MAAM,eAAe,GAAiC;IAC3D,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,eAAe;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,OAAO,EAAE;QACP,UAAU;QACV,MAAM;QACN,OAAO;QACP,UAAU;QACV,aAAa;QACb,OAAO;QACP,WAAW;QACX,UAAU;KACX;IACD,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;CACnD,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAiC;IAC7D,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DV;IAEC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkRP;CACA,CAAC"}
|
|
@@ -26,30 +26,39 @@ if (!parentPort) {
|
|
|
26
26
|
const pending = new Map();
|
|
27
27
|
let nextRpcId = 1;
|
|
28
28
|
|
|
29
|
+
function rpc(method, args) {
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
const id = nextRpcId++;
|
|
32
|
+
pending.set(id, { resolve, reject });
|
|
33
|
+
parentPort.postMessage({ type: "host-rpc", id, method, args });
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Callable proxy per level so both 2-level (kb.list) and 3-level
|
|
38
|
+
// (git.worktree.merge) host methods resolve. A flat one-level proxy
|
|
39
|
+
// turned `git.worktree` into a function whose `.merge` was undefined.
|
|
40
|
+
function node(path) {
|
|
41
|
+
const target = function () {};
|
|
42
|
+
return new Proxy(target, {
|
|
43
|
+
get(_t, key) {
|
|
44
|
+
if (typeof key !== "string") return undefined;
|
|
45
|
+
if (key === "then" || key === "catch" || key === "finally") {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
return node(path ? `${path}.${key}` : key);
|
|
49
|
+
},
|
|
50
|
+
apply(_t, _this, argList) {
|
|
51
|
+
return rpc(path, argList[0]);
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
29
56
|
const reflex = new Proxy(
|
|
30
57
|
{},
|
|
31
58
|
{
|
|
32
59
|
get(_target, namespace) {
|
|
33
60
|
if (typeof namespace !== "string") return undefined;
|
|
34
|
-
return
|
|
35
|
-
{},
|
|
36
|
-
{
|
|
37
|
-
get(_t, method) {
|
|
38
|
-
if (typeof method !== "string") return undefined;
|
|
39
|
-
return (args) =>
|
|
40
|
-
new Promise((resolve, reject) => {
|
|
41
|
-
const id = nextRpcId++;
|
|
42
|
-
pending.set(id, { resolve, reject });
|
|
43
|
-
parentPort.postMessage({
|
|
44
|
-
type: "host-rpc",
|
|
45
|
-
id,
|
|
46
|
-
method: `${namespace}.${method}`,
|
|
47
|
-
args,
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
);
|
|
61
|
+
return node(namespace);
|
|
53
62
|
},
|
|
54
63
|
},
|
|
55
64
|
);
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=2108,exports.ids=[2108],exports.modules={4953:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(24688).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},6993:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(63003),e=c(9310),f=c(24576);async function g({children:a,params:b}){let{id:c}=await b;return await (0,f.Zn)(c)||(0,e.notFound)(),(0,d.jsx)("div",{className:"flex-1 flex flex-col min-h-0",children:a})}},7902:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{AY:()=>m,LH:()=>q,LK:()=>l,Ll:()=>r,XF:()=>s,Xz:()=>o,hb:()=>n,nf:()=>p});var e=c(73745);c(66493);var f=c(65326),g=c(53905),h=c(73928),i=c(55143),j=c(63781),k=a([i]);async function l(a){try{let b=await (0,g.Zn)(a);if(!b)return{ok:!1,error:"Root not found"};let d=await (0,h.listWorkflows)(b.path),{collectExtensions:e}=await Promise.resolve().then(c.bind(c,35961)),f=await e({rootId:a}),i=new Set(d.map(a=>a.id)),j=[...d,...f.workflows.filter(a=>!i.has(a.id))];return{ok:!0,workflows:j}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function m(a,b){try{let c=await (0,g.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};let d=await (0,h.readWorkflow)(c.path,b);if(!d)return{ok:!1,error:"Not found"};return{ok:!0,workflow:d}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function n(a,b){try{let c=await (0,g.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};let d=await (0,h.readWorkflow)(c.path,b.id),e={...b,createdAt:d?.createdAt??b.createdAt??new Date().toISOString(),updatedAt:new Date().toISOString()},j=(0,i.n)(e);if(j)return{ok:!1,error:j};return await (0,h.r$)(c.path,e),(0,f.revalidatePath)(`/roots/${a}/workflows`),(0,f.revalidatePath)(`/roots/${a}/workflows/${b.id}`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function o(a,b,c){try{let d=await (0,g.Zn)(a);if(!d)return{ok:!1,error:"Root not found"};let e=await (0,h.readWorkflow)(d.path,b);if(!e)return{ok:!1,error:"Workflow lives in a utility manifest — uninstall or fork it to disable."};return await (0,h.r$)(d.path,{...e,enabled:c,updatedAt:new Date().toISOString()}),(0,f.revalidatePath)(`/roots/${a}/workflows`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function p(a,b){try{let c=await (0,g.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};return await (0,h.L6)(c.path,b),(0,f.revalidatePath)(`/roots/${a}/workflows`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function q(a,b,c){return(0,i.runWorkflow)(a,b,c)}async function r(a,b){try{let c=await (0,g.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};let d=await (0,h.v)(c.path,b);return{ok:!0,runs:d}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function s(a,b,c,d){try{let e=await (0,g.Zn)(a);if(!e)return{ok:!1,error:"Root not found"};let i=await (0,h.readWorkflow)(e.path,b);if(!i)return{ok:!1,error:"Not found"};let j=i.steps.findIndex(a=>a.id===c);if(j<0)return{ok:!1,error:"Step not found"};let k="up"===d?j-1:j+1;if(k<0||k>=i.steps.length)return{ok:!0};let l=[...i.steps],m=l[j],n=l[k];return l[j]=n,l[k]=m,i.steps=l,i.updatedAt=new Date().toISOString(),await (0,h.r$)(e.path,i),(0,f.revalidatePath)(`/roots/${a}/workflows/${b}`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}i=(k.then?(await k)():k)[0],(0,j.D)([l,m,n,o,p,q,r,s]),(0,e.A)(l,"405ddccbe8bef6d489f4992bda020a2e5bc9f8fae6",null),(0,e.A)(m,"60c82f17604f25eeacd9af7eb98ef2d725c514479e",null),(0,e.A)(n,"60dd5dac778413a6a294ef0b84d0efc3f2bbb648cc",null),(0,e.A)(o,"70051d59581f5c9bb39c5af94036fd17a66b297228",null),(0,e.A)(p,"60df8920bf8e0f288c1daa078d444de5bfce2462b6",null),(0,e.A)(q,"70f18a8b702169b839b3250592ffa4c54fbf738b6c",null),(0,e.A)(r,"607e0286eafa2dc39d12abe59825f9fd9a54026bf9",null),(0,e.A)(s,"78835df1a359bcae4eb4db6365978df62c5d36af8b",null),d()}catch(a){d(a)}})},9310:(a,b,c)=>{"use strict";var d=c(74830);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}}),c.o(d,"redirect")&&c.d(b,{redirect:function(){return d.redirect}})},16144:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"00de78a30d1f02726db8d523a71da4c1f36e96c3f7":()=>g.i,"402e8f8df3442e9022ae18759f7068904e2bc922aa":()=>e.nY,"403e4f3de036fe384be3e5ea40c1312ed13dee7483":()=>h.$z,"405cdcdcb0153357309cbdfd6ea4f78daa27ecf5f6":()=>e.nC,"405ddccbe8bef6d489f4992bda020a2e5bc9f8fae6":()=>i.LK,"4092545769dd65089368bb8058fc7afd52f1ce88e0":()=>f.z,"40930251adfbc5f2553990de7ada6a1100aed1690c":()=>f.u,"409a0534e867f63ddc913b4b1884e09f5a6e1a4b50":()=>h.MU,"607e0286eafa2dc39d12abe59825f9fd9a54026bf9":()=>i.Ll,"6086483d8a166bf6af9245a867f2f5d82269cca46f":()=>h.Tc,"60b25f9a7912f946be9377bda0c1a37aec72f7d8ed":()=>e.OQ,"60c2a4c8a50ed88e5adf0646cff15ad227ad80c5ce":()=>e.L4,"60c82f17604f25eeacd9af7eb98ef2d725c514479e":()=>i.AY,"60d39ef1f029bc97175fe7e6620d90366a0f9201ea":()=>e.T$,"60dd5dac778413a6a294ef0b84d0efc3f2bbb648cc":()=>i.hb,"60df8920bf8e0f288c1daa078d444de5bfce2462b6":()=>i.nf,"70051d59581f5c9bb39c5af94036fd17a66b297228":()=>i.Xz,"708c38608029960899f79a68beb1401258ac0f4c87":()=>e.h$,"70f18a8b702169b839b3250592ffa4c54fbf738b6c":()=>i.LH,"78835df1a359bcae4eb4db6365978df62c5d36af8b":()=>i.XF,"78d12bf078b77e342c117678b70a4104ecdf74c3d7":()=>e.g3});var e=c(13415),f=c(3890),g=c(50995),h=c(15754),i=c(7902),j=a([e,h,i]);[e,h,i]=j.then?(await j)():j,d()}catch(a){d(a)}})},17596:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(19963).A)("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},24688:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(88546),e=c(60703),f=c(61052),g=c(54144),h=c(44113),i=c(43909);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},26290:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(83243),e=c(86103);function f(...a){return(0,e.QP)((0,d.$)(a))}},30717:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(75826).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},42343:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return e}});let d=""+c(75826).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},42382:(a,b,c)=>{"use strict";c.d(b,{E:()=>i});var d=c(64173);c(17240);var e=c(20483),f=c(91520),g=c(91344);let h=(0,e.F)("inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",{variants:{variant:{default:"bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90",outline:"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",ghost:"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",link:"text-primary underline-offset-4 [a&]:hover:underline"}},defaultVariants:{variant:"default"}});function i({className:a,variant:b="default",asChild:c=!1,...e}){let i=c?f.bL:"span";return(0,d.jsx)(i,{"data-slot":"badge","data-variant":b,className:(0,g.cn)(h({variant:b}),a),...e})}},43490:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(75826).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},47452:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(19963).A)("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]])},52231:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"404adc50a01485162509b4a9fdde6d7bfaf805c3f1":()=>d.rD,"40503422fc01a775f357588b2fc0717b684d2c284d":()=>d.Gh,"40a01fd29d879aec92ff36c832cd9d7aef4c3b229d":()=>d.summarizeYoutubeAction,"40a329d4915128f2aca8e828860155b2e68a750b04":()=>d.AZ,"40cb00e3c11070b27380f847f92ec52b3a61950357":()=>d.O1});var d=c(18746)},60524:(a,b,c)=>{"use strict";c.d(b,{Separator:()=>d});let d=(0,c(54491).registerClientReference)(function(){throw Error("Attempted to call Separator() from the server but Separator is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/reflex-agent/reflex-agent/components/ui/separator.tsx","Separator")},71495:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=c(20498),e=c(52512),f=c(19121).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},74830:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=c(71495),e=c(52512),f=c(42343),g=c(43490),h=c(30717),i=c(4953);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},80432:()=>{},84913:(a,b,c)=>{"use strict";c.d(b,{$:()=>i});var d=c(63003);c(34750);var e=c(86209),f=c(65715),g=c(26290);let h=(0,e.F)("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function i({className:a,variant:b="default",size:c="default",asChild:e=!1,...i}){let j=e?f.bL:"button";return(0,d.jsx)(j,{"data-slot":"button","data-variant":b,"data-size":c,className:(0,g.cn)(h({variant:b,size:c,className:a})),...i})}},90160:()=>{}};
|