@agent-native/core 0.161.20 → 0.161.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/clips/actions/finalize-meeting.ts +57 -21
  3. package/corpus/templates/clips/actions/get-meeting.ts +11 -3
  4. package/corpus/templates/clips/actions/request-transcript.ts +183 -8
  5. package/corpus/templates/clips/actions/update-meeting.ts +66 -14
  6. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +80 -135
  7. package/corpus/templates/clips/app/i18n/en-US.ts +4 -0
  8. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +470 -35
  9. package/corpus/templates/clips/changelog/2026-08-18-meeting-notes-support-rich-editing-for-personal-notes-summar.md +6 -0
  10. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +13 -3
  11. package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +13 -7
  12. package/corpus/templates/design/app/hooks/use-navigation-state.ts +18 -21
  13. package/corpus/templates/design/app/pages/design-editor/editor-state.ts +2 -5
  14. package/corpus/templates/design/app/pages/design-editor/tool-state.ts +4 -12
  15. package/corpus/templates/design/app/pages/design-editor/types.ts +38 -1
  16. package/corpus/templates/design/changelog/2026-08-18-advanced-design-editor-panels-hidden-by-default.md +6 -0
  17. package/corpus/templates/design/playwright.config.ts +19 -2
  18. package/corpus/templates/mail/app/components/email/EmailList.tsx +74 -22
  19. package/corpus/templates/mail/app/components/email/infinite-pagination.ts +82 -0
  20. package/corpus/templates/mail/app/hooks/use-emails.ts +1 -0
  21. package/corpus/templates/mail/app/pages/InboxPage.tsx +15 -10
  22. package/corpus/templates/mail/app/pages/inbox-zero.ts +35 -0
  23. package/corpus/templates/mail/changelog/2026-08-18-pinned-labels-load-matches.md +6 -0
  24. package/corpus/templates/slides/actions/get-deck.ts +5 -1
  25. package/corpus/templates/slides/actions/list-decks.ts +29 -8
  26. package/corpus/templates/slides/actions/view-screen.ts +7 -3
  27. package/corpus/templates/slides/changelog/2026-08-18-decks-appear-under-mine.md +6 -0
  28. package/corpus/templates/slides/shared/ownership.ts +6 -0
  29. package/dist/agent/engine/builder-engine.js +15 -8
  30. package/dist/agent/production-agent.d.ts +15 -0
  31. package/dist/agent/production-agent.js +32 -9
  32. package/dist/app-config/schema.d.ts +2 -0
  33. package/dist/app-config/workspace.d.ts +2 -0
  34. package/dist/app-config/workspace.js +18 -0
  35. package/dist/catalog.json +23 -23
  36. package/dist/client/analytics.d.ts +1 -0
  37. package/dist/client/api-path.js +7 -3
  38. package/dist/client/frame.js +20 -6
  39. package/dist/client/org/workspace-app-links.js +10 -1
  40. package/dist/collab/awareness.d.ts +2 -2
  41. package/dist/collab/routes.d.ts +1 -1
  42. package/dist/deploy/build.js +26 -2
  43. package/dist/observability/routes.d.ts +2 -2
  44. package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
  45. package/dist/provider-api/actions/provider-api.d.ts +15 -15
  46. package/dist/server/app-origin-config.d.ts +1 -0
  47. package/dist/server/app-origin-config.js +3 -0
  48. package/dist/server/auth.js +2 -2
  49. package/dist/server/cookie-namespace.js +17 -2
  50. package/dist/server/credential-provider.js +5 -2
  51. package/dist/server/derived-secret.js +3 -2
  52. package/dist/server/onboarding-html.js +34 -2
  53. package/dist/server/workspace-oauth.js +11 -6
  54. package/dist/shared/runtime-config.d.ts +2 -0
  55. package/dist/shared/runtime-config.js +12 -3
  56. package/dist/vite/client.js +5 -2
  57. package/package.json +2 -2
@@ -75,9 +75,10 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
75
75
  user: "user";
76
76
  }>>;
77
77
  }, z.core.$strip>>, {
78
+ message?: undefined;
78
79
  id?: undefined;
79
- provider?: undefined;
80
80
  deleted?: undefined;
81
+ found?: undefined;
81
82
  providers: {
82
83
  id: string;
83
84
  label: string;
@@ -88,46 +89,45 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
88
89
  updatedAt: number;
89
90
  }[];
90
91
  count: number;
91
- found?: undefined;
92
+ provider?: undefined;
92
93
  registered?: undefined;
93
94
  label?: undefined;
94
- message?: undefined;
95
95
  } | {
96
+ message?: undefined;
97
+ count?: undefined;
96
98
  id?: undefined;
97
99
  deleted?: undefined;
98
100
  providers?: undefined;
99
- count?: undefined;
100
101
  found: boolean;
101
102
  provider: import("../custom-registry.js").CustomProviderConfig;
102
103
  registered?: undefined;
103
104
  label?: undefined;
104
- message?: undefined;
105
105
  } | {
106
- provider?: undefined;
106
+ message?: undefined;
107
+ count?: undefined;
107
108
  deleted?: undefined;
108
109
  providers?: undefined;
109
- count?: undefined;
110
+ provider?: undefined;
110
111
  found: boolean;
111
112
  id: string;
112
113
  registered?: undefined;
113
114
  label?: undefined;
114
- message?: undefined;
115
115
  } | {
116
- provider?: undefined;
117
- providers?: undefined;
116
+ message?: undefined;
118
117
  count?: undefined;
119
118
  found?: undefined;
119
+ providers?: undefined;
120
+ provider?: undefined;
120
121
  deleted: boolean;
121
122
  id: string;
122
123
  registered?: undefined;
123
124
  label?: undefined;
124
- message?: undefined;
125
125
  } | {
126
- provider?: undefined;
127
- deleted?: undefined;
128
- providers?: undefined;
129
126
  count?: undefined;
127
+ deleted?: undefined;
130
128
  found?: undefined;
129
+ providers?: undefined;
130
+ provider?: undefined;
131
131
  registered: boolean;
132
132
  id: string;
133
133
  label: string;
@@ -312,7 +312,9 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
312
312
  scope?: "org" | "user" | undefined;
313
313
  }, {
314
314
  id?: undefined;
315
- message?: undefined;
315
+ deleted?: undefined;
316
+ provider?: undefined;
317
+ found?: undefined;
316
318
  providers: {
317
319
  id: string;
318
320
  label: string;
@@ -323,47 +325,45 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
323
325
  updatedAt: number;
324
326
  }[];
325
327
  count: number;
326
- provider?: undefined;
327
- found?: undefined;
328
- deleted?: undefined;
329
328
  registered?: undefined;
330
329
  label?: undefined;
330
+ message?: undefined;
331
331
  } | {
332
332
  id?: undefined;
333
- message?: undefined;
333
+ deleted?: undefined;
334
334
  providers?: undefined;
335
335
  count?: undefined;
336
336
  found: boolean;
337
337
  provider: import("../custom-registry.js").CustomProviderConfig;
338
- deleted?: undefined;
339
338
  registered?: undefined;
340
339
  label?: undefined;
341
- } | {
342
340
  message?: undefined;
341
+ } | {
342
+ deleted?: undefined;
343
+ provider?: undefined;
343
344
  providers?: undefined;
344
345
  count?: undefined;
345
- provider?: undefined;
346
346
  found: boolean;
347
347
  id: string;
348
- deleted?: undefined;
349
348
  registered?: undefined;
350
349
  label?: undefined;
351
- } | {
352
350
  message?: undefined;
353
- providers?: undefined;
354
- count?: undefined;
351
+ } | {
355
352
  provider?: undefined;
356
353
  found?: undefined;
354
+ providers?: undefined;
355
+ count?: undefined;
357
356
  deleted: boolean;
358
357
  id: string;
359
358
  registered?: undefined;
360
359
  label?: undefined;
360
+ message?: undefined;
361
361
  } | {
362
- providers?: undefined;
363
- count?: undefined;
362
+ deleted?: undefined;
364
363
  provider?: undefined;
365
364
  found?: undefined;
366
- deleted?: undefined;
365
+ providers?: undefined;
366
+ count?: undefined;
367
367
  registered: boolean;
368
368
  id: string;
369
369
  label: string;
@@ -19,5 +19,6 @@ export declare function resolvePublicAppOriginConfig(): {
19
19
  appUrl?: string;
20
20
  workspaceGatewayUrl?: string;
21
21
  workspaceOAuthOrigin?: string;
22
+ workspaceRuntime?: boolean;
22
23
  } | null;
23
24
  export declare function getAppOriginClientConfigScript(): string | null;
@@ -18,6 +18,8 @@ import { getAppConfig } from "../app-config/index.js";
18
18
  */
19
19
  export function resolvePublicAppOriginConfig() {
20
20
  const config = getAppConfig();
21
+ const workspaceRuntime = config.workspace.isWorkspace === true ||
22
+ typeof config.workspace.appsJson === "string";
21
23
  const resolved = {
22
24
  ...(config.app.url ? { appUrl: config.app.url } : {}),
23
25
  ...(config.workspace.gatewayUrl
@@ -26,6 +28,7 @@ export function resolvePublicAppOriginConfig() {
26
28
  ...(config.workspace.oauthOrigin
27
29
  ? { workspaceOAuthOrigin: config.workspace.oauthOrigin }
28
30
  : {}),
31
+ ...(workspaceRuntime ? { workspaceRuntime: true } : {}),
29
32
  };
30
33
  return Object.keys(resolved).length > 0 ? resolved : null;
31
34
  }
@@ -2957,8 +2957,8 @@ async function mountBetterAuthRoutes(app, options) {
2957
2957
  redirectPath: oauthDebugUrlPath(redirectUri),
2958
2958
  returnUrl,
2959
2959
  redirect: q.redirect === "1",
2960
- workspace: process.env.AGENT_NATIVE_WORKSPACE === "1" ||
2961
- process.env.VITE_AGENT_NATIVE_WORKSPACE === "1",
2960
+ workspace: getAppConfig().workspace.isWorkspace === true ||
2961
+ typeof getAppConfig().workspace.appsJson === "string",
2962
2962
  });
2963
2963
  const params = new URLSearchParams({
2964
2964
  client_id: googleSignInCredentials.clientId,
@@ -1,9 +1,12 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
+ import { getAppConfig } from "../app-config/index.js";
4
+ import { isTruthyRuntimeValue } from "../shared/runtime-config.js";
3
5
  const FIRST_PARTY_COOKIE_DOMAIN = "agent-native.com";
4
6
  export function resolveAuthCookieNamespace(env = process.env, cwd = process.cwd()) {
5
- const isWorkspaceMode = env.AGENT_NATIVE_WORKSPACE === "1" ||
6
- env.VITE_AGENT_NATIVE_WORKSPACE === "1";
7
+ const isWorkspaceMode = env === process.env
8
+ ? isConfiguredWorkspaceRuntime()
9
+ : isWorkspaceModeFromEnv(env);
7
10
  const configuredCookieDomain = normalizeCookieDomain(env.COOKIE_DOMAIN);
8
11
  const isFirstPartyCookieDomain = normalizeDomainForCompare(configuredCookieDomain) ===
9
12
  FIRST_PARTY_COOKIE_DOMAIN;
@@ -63,6 +66,18 @@ export function resolveAuthCookieNamespace(env = process.env, cwd = process.cwd(
63
66
  isFirstPartyCookieDomain,
64
67
  };
65
68
  }
69
+ function isConfiguredWorkspaceRuntime() {
70
+ const workspace = getAppConfig().workspace;
71
+ return (workspace.isWorkspace === true || typeof workspace.appsJson === "string");
72
+ }
73
+ function isWorkspaceModeFromEnv(env) {
74
+ const workspaceFlag = firstConfiguredValue(env.AGENT_NATIVE_WORKSPACE, env.VITE_AGENT_NATIVE_WORKSPACE);
75
+ const workspaceApps = firstConfiguredValue(env.AGENT_NATIVE_WORKSPACE_APPS_JSON, env.VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON);
76
+ return isTruthyRuntimeValue(workspaceFlag) || Boolean(workspaceApps);
77
+ }
78
+ function firstConfiguredValue(...values) {
79
+ return values.find((value) => value?.trim())?.trim();
80
+ }
66
81
  function readPackageJsonName(cwd) {
67
82
  try {
68
83
  const raw = fs.readFileSync(path.join(cwd, "package.json"), "utf8");
@@ -22,6 +22,7 @@ import { CREDENTIAL_STORE_UNAVAILABLE_ERROR_CODE, GATEWAY_UNAVAILABLE_VISITOR_ME
22
22
  import { getAppConfig } from "../app-config/index.js";
23
23
  import { getDbExec, isLocalDatabase, isTransientDatabaseError, } from "../db/client.js";
24
24
  import { getOrgSetting } from "../settings/org-settings.js";
25
+ import { isTruthyRuntimeValue } from "../shared/runtime-config.js";
25
26
  import { getRequestUserEmail, getRequestOrgId } from "./request-context.js";
26
27
  const DISPATCH_VAULT_ACCESS_SETTINGS_KEY = "dispatch-vault-access-settings";
27
28
  /**
@@ -209,8 +210,10 @@ function isHostedWorkspaceRuntime() {
209
210
  const hasFusionPreview = Boolean(process.env.FUSION_ENVIRONMENT ||
210
211
  process.env.FUSION_ENV_ORIGIN ||
211
212
  process.env.VITE_FUSION_ENV_ORIGIN);
212
- return (/^(1|true)$/i.test(process.env.AGENT_NATIVE_WORKSPACE ?? "") ||
213
- /^(1|true)$/i.test(process.env.VITE_AGENT_NATIVE_WORKSPACE ?? "") ||
213
+ return (isTruthyRuntimeValue(process.env.AGENT_NATIVE_WORKSPACE) ||
214
+ isTruthyRuntimeValue(process.env.VITE_AGENT_NATIVE_WORKSPACE) ||
215
+ Boolean(process.env.AGENT_NATIVE_WORKSPACE_APPS_JSON?.trim()) ||
216
+ Boolean(process.env.VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON?.trim()) ||
214
217
  hasFusionPreview);
215
218
  }
216
219
  function isProductionLikeRuntime() {
@@ -1,8 +1,9 @@
1
1
  import crypto from "node:crypto";
2
+ import { getAppConfig } from "../app-config/index.js";
2
3
  const DERIVED_SECRET_PREFIX = "agent-native:derived-secret:v1";
3
4
  function isWorkspaceRuntime() {
4
- return (process.env.AGENT_NATIVE_WORKSPACE === "1" ||
5
- process.env.VITE_AGENT_NATIVE_WORKSPACE === "1");
5
+ const workspace = getAppConfig().workspace;
6
+ return (workspace.isWorkspace === true || typeof workspace.appsJson === "string");
6
7
  }
7
8
  export function deriveServerSecret(rootSecret, purpose) {
8
9
  return crypto
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * After first account exists, this page acts as a normal login page.
8
8
  */
9
+ import { getAppConfig } from "../app-config/index.js";
9
10
  import { getLocaleInitScript } from "../localization/server.js";
10
11
  import { DEFAULT_LOCALE, LOCALE_METADATA, LOCALE_STORAGE_KEY, SUPPORTED_LOCALES, } from "../localization/shared.js";
11
12
  import { NATIVE_AUTH_COPY } from "../shared/auth-copy.js";
@@ -42,6 +43,25 @@ function getConnectionLabel() {
42
43
  return "Turso";
43
44
  return "SQL database";
44
45
  }
46
+ function isWorkspaceRuntime() {
47
+ const workspace = getAppConfig().workspace;
48
+ return (workspace.isWorkspace === true || typeof workspace.appsJson === "string");
49
+ }
50
+ function workspaceBasePathFromRequest(requestPath) {
51
+ if (!isWorkspaceRuntime() || !requestPath)
52
+ return "";
53
+ const pathname = requestPath.split(/[?#]/, 1)[0] || "/";
54
+ const firstSegment = pathname.split("/").find(Boolean);
55
+ if (!firstSegment ||
56
+ firstSegment === "_agent-native" ||
57
+ firstSegment === "api" ||
58
+ firstSegment === "sign-in" ||
59
+ firstSegment === "login" ||
60
+ firstSegment === "signup") {
61
+ return "";
62
+ }
63
+ return normalizeAppBasePath(`/${firstSegment}`);
64
+ }
45
65
  function withAppBasePath(path) {
46
66
  const cleanPath = path.startsWith("/") ? path : `/${path}`;
47
67
  const basePath = normalizeAppBasePath(process.env.VITE_APP_BASE_PATH || process.env.APP_BASE_PATH);
@@ -997,7 +1017,9 @@ export function getOnboardingHtml(opts = {}) {
997
1017
  // for every visitor. A genuinely misconfigured server instead surfaces a
998
1018
  // clear error at click time via the auth API.
999
1019
  const renderGoogleButton = showGoogle || googleOnly;
1000
- const appBasePath = normalizeAppBasePath(process.env.VITE_APP_BASE_PATH || process.env.APP_BASE_PATH);
1020
+ const configuredAppBasePath = normalizeAppBasePath(process.env.VITE_APP_BASE_PATH || process.env.APP_BASE_PATH);
1021
+ const appBasePath = configuredAppBasePath || workspaceBasePathFromRequest(opts.requestPath);
1022
+ const workspaceRuntime = isWorkspaceRuntime();
1001
1023
  const publicOAuthOrigin = getPublicOAuthOrigin();
1002
1024
  const workspaceGatewayReturnOrigin = getWorkspaceGatewayReturnOrigin();
1003
1025
  const googleAuthMode = resolveGoogleAuthMode(opts.googleAuthMode);
@@ -2126,7 +2148,17 @@ ${signupLocalModeNoteHtml}
2126
2148
  if (configured) return configured;
2127
2149
  var marker = '/_agent-native';
2128
2150
  var idx = window.location.pathname.indexOf(marker);
2129
- return idx > 0 ? window.location.pathname.slice(0, idx) : '';
2151
+ if (idx > 0) return window.location.pathname.slice(0, idx);
2152
+ if (${JSON.stringify(workspaceRuntime)}) {
2153
+ var segments = window.location.pathname.split('/');
2154
+ for (var i = 0; i < segments.length; i++) {
2155
+ var segment = segments[i];
2156
+ if (segment && segment !== '_agent-native' && segment !== 'api' && segment !== 'sign-in' && segment !== 'login' && segment !== 'signup') {
2157
+ return '/' + segment;
2158
+ }
2159
+ }
2160
+ }
2161
+ return '';
2130
2162
  }
2131
2163
  function __anPath(path) {
2132
2164
  return __anBasePath() + path;
@@ -1,3 +1,5 @@
1
+ import { getAppConfig } from "../app-config/index.js";
2
+ import { isTruthyRuntimeValue } from "../shared/runtime-config.js";
1
3
  /**
2
4
  * Whether workspace OAuth callbacks use the root framework relay.
3
5
  *
@@ -8,13 +10,16 @@
8
10
  * the mounted app that initiated it.
9
11
  */
10
12
  export function isWorkspaceOAuthCallbackRelayEnabled() {
13
+ const workspace = getAppConfig().workspace;
11
14
  const metaEnv = import.meta.env;
12
- return ([
13
- process.env.AGENT_NATIVE_WORKSPACE,
14
- process.env.VITE_AGENT_NATIVE_WORKSPACE,
15
- metaEnv?.AGENT_NATIVE_WORKSPACE,
16
- metaEnv?.VITE_AGENT_NATIVE_WORKSPACE,
17
- ].some((value) => value === "1" || value === "true") ||
15
+ return (workspace.isWorkspace === true ||
16
+ typeof workspace.appsJson === "string" ||
17
+ [
18
+ process.env.AGENT_NATIVE_WORKSPACE,
19
+ process.env.VITE_AGENT_NATIVE_WORKSPACE,
20
+ metaEnv?.AGENT_NATIVE_WORKSPACE,
21
+ metaEnv?.VITE_AGENT_NATIVE_WORKSPACE,
22
+ ].some((value) => isTruthyRuntimeValue(value)) ||
18
23
  [
19
24
  process.env.AGENT_NATIVE_WORKSPACE_APP_ID,
20
25
  process.env.VITE_AGENT_NATIVE_WORKSPACE_APP_ID,
@@ -37,6 +37,8 @@ export interface RuntimeConfigReportOptions {
37
37
  phase?: RuntimeConfigPhase;
38
38
  appName?: string;
39
39
  }
40
+ /** Parse the truthy spellings accepted by typed runtime configuration flags. */
41
+ export declare function isTruthyRuntimeValue(value: string | boolean | undefined): boolean;
40
42
  export declare function runtimeConfigRequirementsFromSearchParams(searchParams: URLSearchParams): RuntimeConfigRequirements;
41
43
  export declare function buildRuntimeConfigPrompt(report: Pick<RuntimeConfigReport, "environment" | "phase" | "issues">, appName?: string): string;
42
44
  export declare function getRuntimeConfigReport(env: Record<string, string | undefined>, requirements?: RuntimeConfigRequirements, options?: RuntimeConfigReportOptions): RuntimeConfigReport;
@@ -5,6 +5,13 @@
5
5
  * process.env so the same rules can run during a Vite build, on the server,
6
6
  * and in focused tests without ever exposing secret values to the browser.
7
7
  */
8
+ /** Parse the truthy spellings accepted by typed runtime configuration flags. */
9
+ export function isTruthyRuntimeValue(value) {
10
+ if (value === true)
11
+ return true;
12
+ return (typeof value === "string" &&
13
+ ["1", "true", "yes", "on"].includes(value.trim().toLowerCase()));
14
+ }
8
15
  const ENV_KEY_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
9
16
  const RUNTIME_CONFIG_ISSUE_CODES = new Set([
10
17
  "auth-disabled-in-production",
@@ -36,7 +43,7 @@ function valueOf(env, key) {
36
43
  return value || undefined;
37
44
  }
38
45
  function truthy(value) {
39
- return value === "1" || value?.toLowerCase() === "true";
46
+ return isTruthyRuntimeValue(value);
40
47
  }
41
48
  function isProductionEnvironment(env) {
42
49
  return (valueOf(env, "NODE_ENV") === "production" ||
@@ -44,8 +51,10 @@ function isProductionEnvironment(env) {
44
51
  valueOf(env, "VERCEL_ENV") === "production");
45
52
  }
46
53
  function isWorkspaceRuntime(env) {
47
- return (valueOf(env, "AGENT_NATIVE_WORKSPACE") === "1" ||
48
- valueOf(env, "VITE_AGENT_NATIVE_WORKSPACE") === "1");
54
+ return (isTruthyRuntimeValue(valueOf(env, "AGENT_NATIVE_WORKSPACE")) ||
55
+ isTruthyRuntimeValue(valueOf(env, "VITE_AGENT_NATIVE_WORKSPACE")) ||
56
+ Boolean(valueOf(env, "AGENT_NATIVE_WORKSPACE_APPS_JSON")) ||
57
+ Boolean(valueOf(env, "VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON")));
49
58
  }
50
59
  function appEnvPrefix(env, appName) {
51
60
  const raw = appName ?? valueOf(env, "APP_NAME");
@@ -15,7 +15,7 @@ import { EMBED_SESSION_COOKIE, EMBED_TOKEN_QUERY_PARAM, MCP_APP_CHAT_BRIDGE_QUER
15
15
  import { isMcpEmbedCorsOrigin, MCP_EMBED_CORS_ALLOW_HEADERS, MCP_EMBED_STATIC_ASSET_HEADERS, mcpEmbedStaticAssetRouteRules, shouldAllowMcpEmbedCredentials, } from "../shared/mcp-embed-headers.js";
16
16
  import { normalizeMcpIntegrationsConfig, } from "../shared/mcp-integration-config.js";
17
17
  import { normalizeAgentNativeRouteWarmupConfig, } from "../shared/route-warmup-config.js";
18
- import { formatRuntimeConfigReport, getRuntimeConfigReport, } from "../shared/runtime-config.js";
18
+ import { formatRuntimeConfigReport, getRuntimeConfigReport, isTruthyRuntimeValue, } from "../shared/runtime-config.js";
19
19
  import { actionTypesPlugin } from "./action-types-plugin.js";
20
20
  import { createAgentNativeConfigContext, loadAgentNativeConfigFile, loadWorkspaceAgentNativeConfigFile, readAgentNativeJsonConfig, } from "./agent-native-config-loader.js";
21
21
  import { agentsBundlePlugin } from "./agents-bundle-plugin.js";
@@ -2791,7 +2791,10 @@ function createAgentNativeConfig(options = {}, command, userConfig = {}, mode =
2791
2791
  };
2792
2792
  reportRuntimeConfigDiagnostics(appConfig, configContext, mode, runtimeEnv);
2793
2793
  const { base } = getConfiguredAppBasePath();
2794
- const isWorkspaceChild = process.env.AGENT_NATIVE_WORKSPACE === "1";
2794
+ const isWorkspaceChild = isTruthyRuntimeValue(process.env.AGENT_NATIVE_WORKSPACE) ||
2795
+ isTruthyRuntimeValue(process.env.VITE_AGENT_NATIVE_WORKSPACE) ||
2796
+ Boolean(process.env.AGENT_NATIVE_WORKSPACE_APPS_JSON?.trim()) ||
2797
+ Boolean(process.env.VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON?.trim());
2795
2798
  const monorepoPackageAllow = [
2796
2799
  path.resolve(cwd, "../../packages/core"),
2797
2800
  path.resolve(cwd, "../core"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.161.20",
3
+ "version": "0.161.23",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -425,7 +425,7 @@
425
425
  "tweetnacl": "^1.0.3",
426
426
  "undici": "^7.28.0",
427
427
  "y-protocols": "^1.0.7",
428
- "yjs": "^13.6.31",
428
+ "yjs": "^13.6.32",
429
429
  "zod": "^4.3.6",
430
430
  "@agent-native/recap-cli": "0.5.4",
431
431
  "@agent-native/toolkit": "^0.16.4"